Django添加游戏编辑链接时post路径出现NoReverseMatch错误如何解决
报错原因
你使用的Django DetailView默认只会给模板传入名为object的模型实例上下文,你在game_detail.html的编辑链接里用了post.pk作为参数,但是模板上下文中不存在post这个变量,post.pk解析后是空值,反向解析edit_game路由时传入了空字符串参数,和路由要求的数字类型pk不匹配,就抛出了这个NoReverseMatch错误。
修复方法
两种方案任选其一即可:
- 直接修改模板的链接参数,和你页面其他地方调用变量的写法保持一致,把编辑链接的代码改成:
<a href="{% url 'edit_game' object.pk %}">Edit Game</a>
- 如果你希望模板里统一用
post作为变量名,就在GameDetailView视图类中指定上下文名称:
class GameDetailView(DetailView): model = Game template_name = 'game_detail.html' context_object_name = 'post' # 新增这行
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

