Django2.0模板渲染报错:无法找到'detail'反向解析匹配路径
问题排查与解决
嘿,看你的报错信息,核心问题是在反向解析detail路由时传递了空参数——这是因为模板里的question.id没有拿到有效值,根源出在views.py的results视图里的一个拼写错误!
仔细看main_app/views.py里的results函数:
def results(request,question_id): question = get_object_or_404(Question,pk=question_id) context = {'queston':question} # 这里少了个字母'i'! return render(request,'main_app/results.html',context)
你把上下文变量名写成了queston(少了i),但results.html模板里用的是{{question.id}},Django找不到question这个变量,就会把它渲染成空字符串。这就导致{% url 'main_app:detail' question.id %}传递了空参数,和你的路由规则['main_app\/(?P[0-9]+)\/$']不匹配,所以报错。
修复步骤
- 打开
main_app/views.py,找到results函数 - 把
context里的queston修正为question,修正后的代码如下:
def results(request,question_id): question = get_object_or_404(Question,pk=question_id) context = {'question':question} return render(request,'main_app/results.html',context)
修正后,模板就能正确获取到question.id的值,反向解析路由也能正常工作,你的报错就会消失啦!
内容的提问来源于stack exchange,提问作者NUK
相关产品推荐
相关产品推荐

