DJango - NoReverseMatch 错误

DJango - NoReverseMatch Error

也就是异常值: 反转 '' 与参数 '()' 和关键字参数 '{'id': 1}' 未找到。尝试了 0 种模式:[]

index.html

<p>Estudiante: <a href="{% url 'polls.views.student_detail' id=student.id %}">{{student.stduent_name}}</a></p>

link 应该去这样的路由“127.0.0.1:8000/polls/1/”。该路线在 link.

之外运行良好

views.py

def student_detail(request, id):
    student = get_object_or_404(Student, id=id)
    return render(request, 'polls/student_detail.html', {'student': student})

urls.py

urlpatterns = [
     url(r'^$', views.index),
     url(r'^polls/(?P<id>[0-9]+)/', views.student_detail),

]

图片:

Error details

Route tree

url 模板标签的第一个参数是 "url name"。定义路由的时候需要指定名称,比如:

url(r'^polls/(?P<id>[0-9]+)/', views.student_detail, name='student-detail'),

然后更新您的模板以像这样使用它:

{% url 'student-detail' id=student.id %}

请参阅 url 模板上的 the documentation 和 url 名称。

异常中的模板代码与您在问题中粘贴的模板代码不同。异常表明您的模板标签如下所示:

{% url polls.views.student_detail id=student.id %}

注意与异常一致的遗漏引号。如果没有引号,django 会尝试将 polls.views.student_detail 解析为变量,而不是将其作为字符串传递给模板标签。由于它无法解析您正在将空白字符串传递给您的模板标签。

您正在按名称调用 url,但 urls.py 文件中没有这样的名称 url。

你的url模式应该是:

urlpatterns = [
    url(r'^$', views.index),
    url(r'^polls/(?P<id>[0-9]+)/', views.student_detail, name='student_detail'),
]

然后在您的模板中:

<p>Estudiante: <a href="{% url 'student_detail' student.id %}">{{student.stduent_name}}</a></p>

请注意,您不需要显式传递参数名称,Django 会在 url 正则表达式模式中指定的相应参数中转换由 space 分隔的每个参数。