这是例外值: 反向''带参数'()'和关键字参数'{'id':1}'未找到。尝试了0种模式:[]
的index.html
<p>Estudiante: <a href="{% url 'polls.views.student_detail' id=student.id %}">{{student.stduent_name}}</a></p>
链接应该转到这样的路线“127.0.0.1:8000/polls/1/”。路线工作正常。
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),
图片:
答案 0 :(得分:2)
url
模板标记的第一个参数是“url name”。您需要在定义路径时指定名称,例如:
url(r'^polls/(?P<id>[0-9]+)/', views.student_detail, name='student-detail'),
然后更新您的模板以使用它:
{% url 'student-detail' id=student.id %}
请参阅网址模板和网址名称上的the documentation。
答案 1 :(得分:1)
例外中的模板代码与您在问题中粘贴的模板代码不同。该异常表示您的模板标记如下:
{% url polls.views.student_detail id=student.id %}
请注意与异常一致的缺失引号。如果没有引号,django会尝试将polls.views.student_detail解析为变量,而不是将其作为字符串传递给模板标记。因为它无法解决您将空白字符串传递给模板标记。
答案 2 :(得分:1)
您正在按名称调用网址,但urls.py文件中没有此类命名网址。
你的urlpatterns应该是:
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正则表达式模式中指定的相应参数中转换由空格分隔的每个参数。