Django 2.0模板移除硬编码URL失效,请求协助排查问题
解决Django模板中URL反向解析失败的问题
嘿,我帮你找出了几个导致错误的关键问题,咱们一步步来修正:
1. URL路由名称拼写错误
你的urls.py里,detail视图对应的路由名称写错了——把detail拼成了datail!这会让Django的{% url %}标签找不到对应的路由,直接报错。
修正后的urls.py中对应的路由行:
path('<int:question_id>/', views.detail, name='detail'), # 把name='datail'改成name='detail'
2. 模板中变量传递错误
在index.html的循环里,你写的是{% url 'detail' question_id %},但当前循环的变量是question,并没有question_id这个变量,应该传递question.id才对。另外,因为你设置了app_name = 'polls',建议加上命名空间(polls:),这样能避免不同app的路由名称冲突,更规范。
修正后的index.html中的链接行:
<li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>
3. 之前尝试的模板变量名错误
你提到曾改成{% url 'detail' poll.id %},但模板循环里的对象是question,不是poll,所以变量名应该是question.id而非poll.id,这也是一个容易忽略的小问题。
把这几个地方修正后,模板里的反向解析URL就能正常工作了,本质上就是路由名称拼写错误和模板变量不匹配导致的问题~
内容的提问来源于stack exchange,提问作者Zhao Canxiang
相关产品推荐
相关产品推荐

