Django博客编辑帖子页面反向路由无参数匹配报错求助
报错原因排查
1. 直接触发报错的原因
你定义的edit_post路由要求必须传入post_id整数参数,但是在blogposts.html模板中调用{% url 'blogs:edit_post' %}时没有传递对应的帖子ID参数,导致Django无法反向解析出匹配的URL,所以抛出该错误。
2. 额外隐藏的错误
除了上述直接原因,你的代码还有两处隐藏问题,修改完第一个问题后也会触发报错,需要一并修正:
- 视图函数
edit_post中,构造上下文context = {'post':post, 'form':form}时,变量post未定义,你查询得到的对象名是current_entry edit_post.html模板末尾的结束块写错了,把{%写成了{$,会触发模板语法错误
解决方法
1. 修正blogposts.html的编辑链接
把blogposts.html里的编辑链接代码修改为,传入当前循环的blogpost的id:
<a href="{% url 'blogs:edit_post' blogpost.id %}">Edit post</a>
2. 修正edit_post视图的上下文变量
把edit_post视图里的上下文构造代码修改为:
context = {'post': current_entry, 'form': form}
3. 修正edit_post.html的结束块语法
把edit_post.html末尾的{$ endblock content %}修改为正确的模板语法:
{% endblock content %}
内容的提问来源于stack exchange,提问作者Jon Samson
相关产品推荐
相关产品推荐

