Django双主键路由问题:无法反向解析thread路由
Django反向解析'thread'失败的解决办法
问题根源
你的thread路由定义了forum_id和thread_id两个参数,但存在两个关键问题:
thread视图仅接收thread_id单个参数,和路由要求的参数数量不匹配- 模板未生成包含两个参数的反向链接,导致反向解析时参数不全触发报错
修复步骤
1. 修正thread视图的参数
修改views.py中的thread函数,添加forum_id参数(即便视图逻辑里用不到这个参数,也需要接收,因为路由定义了必须传递该值):
def thread(request, forum_id, thread_id): # 新增forum_id参数 thread = get_object_or_404(ThreadModel, id=thread_id) posts = PostModel.objects.filter(thread=thread) context={'thread':thread,'posts':posts} return render(request,'threaddetail.html',context)
2. 在模板中生成正确的反向链接
原模板仅显示标题,现在需要用{% url %}标签生成跳转链接,同时传递当前论坛的forum_id和帖子的thread_id:
<ul> {% for thready in threads %} <li><a href="{% url 'thread' forum_id=forums.id thread_id=thready.id %}">{{ thready.title }}</a></li> {% endfor %} </ul>
完成以上修改后,反向解析时就能提供路由要求的两个参数,报错问题即可解决。
内容的提问来源于stack exchange,提问作者Anish pandey
相关产品推荐
相关产品推荐

