#django #python-3.x
#django #python-3.x
Вопрос:
Помогите мне, пожалуйста!
Извините за мой английский, я слаб в английском!
Я пытаюсь посетить эту страницу 192.168.56.102 / project / BP / 4
, она показывает мне сообщение об ошибке! те же конфигурации URL-адресов и просмотров с другой страницей, это работает нормально.
Reverse for '' not found. '' is not a valid view function or pattern name.
Request Method: GET
Request URL: http://192.168.56.102/project/BP/4
Django Version: 2.1.7
Exception Type: NoReverseMatch
Exception Value:
Reverse for '' not found. '' is not a valid view function or pattern name.
urls.py :
urlpatterns = [
#Project :
path('', views.projects , name = 'project'),
path('BP/<int:id_project>', views.tb_project , name='tb_project'),
path('add/', views.add_project , name = 'add_project'),
path('delete/p/<int:id_project>',views.delete_project , name='delete_project'),
path('edit/<int:id_project>' , views.edit_project , name = 'edit_project'),
#Zone Action :
path('zone/<int:id_project>/' , views.list_zones , name ='list_zone'),
path('zone/add/<int:id_project>/' , views.add_ZoneAction , name = 'add_zone'),
path('delete/z/<int:id_project>/<int:id_zone>',views.delete_zone , name='delete_zone'),
path('zone/edit/<int:id_zone>' , views.edit_ZoneAction , name = 'edit_zone'),
]
views.py :
def tb_project(request,id_project):
template ="project/bord_project.html"
context = {}
prj = get_object_or_404(project ,id = id_project)
context["prj"] = prj
return render(request, template ,context)
page.html
<a href="{% url 'tb_project' element.id %}">
<!-- element.id = 4 -->
ссылка отображается на странице правильно: 192.168.56.102/project/BP/4
но когда я нажимаю, чтобы перейти к bord_project.html
, я вижу сообщение об ошибке!
Page.html :
list_tuple является контекстной переменной
{% extends "base.html" %}
{% load static %}
{% block contenu %}
<div class="container">
{% for elements in list_tuple %}
<div class="row" style="margin-top : 10px;">
{% for element in elements %}
<div class = "col-4">
<div class="card text-center">
<div class="card-header">
Projet
</div>
<div class="card-body">
<h5 class="card-title">
{{ element.intitule }}
</h5>
<p class="card-text">
{{ element.description|truncatewords:7 }}
</p>
<a href="{% url 'tb_project' element.id %}" class="btn btn-info">
{# link #}
Plus amp;raquo;
</a>
</div>
<div class="card-footer text-muted">
{{ element.date }}
</div>
</div>
</div>
{% endfor %}
</div>
{% endfor %}
</div>
на данный момент bord_project.html пустое
{% extends "base.html" %}
{% load static %}
{% block contenu %}
{# blank for the moment #}
{% endblock %}
Комментарии:
1. Пожалуйста, покажите
project/bord_project.html
вместоpage.html
.2. спасибо @Alasdair , я редактирую сообщение и добавляю
project/bord_project
,page.html
3. На ваш взгляд,
prj = get_object_or_404(project ,id = id_project)
называется ли модельproject
? Вероятно, этоProject
4. В сообщении об ошибке говорится,
Reverse for ''
но ни один из{% url %}
показанных вами тегов не вызвал бы эту ошибку. Возможно, проблема вbase.html
5. спасибо @Pedro, нет, это проект, я забыл указать его с большой буквы
Ответ №1:
Я не верю, что проблема в каком-либо коде, который вы вставили. Вам следует запустить $ grep -r -E "reverse|url" .
или аналогичную команду поиска, чтобы найти любые разрешения URL, которые могут отсутствовать.
Где-то у вас есть вызов reverse[_lazy]
функции или url
templatetag, который выполняет неверный поиск.
Убедитесь, что при любом использовании url
тега templatetag вокруг имени представления используются кавычки.
Комментарии:
1. Спасибо @Joshua, ошибка была в родительском html-файле
base.html
, часть кода была в commantaire, и сервер не игнорирует ее