Django报NoReverseMatch错误:反向解析edit无参数找不到路径怎么解决
你的报错根源不在entry.html的链接,而在edit.html模板的表单配置里。
你点击entry页面的编辑链接后,请求成功进入了edit视图的GET逻辑,视图返回edit.html模板时,模板内的表单标签写的是:
<form action="{% url 'edit' %}" method="POST">
这里调用{% url 'edit' %}没有传入必填的entry参数,而你的edit路径定义要求必须传这个参数,Django反向解析URL失败,才抛出了这个NoReverseMatch错误。你看到的报错路径是/wiki/edit/HTML,也刚好证明了你已经成功跳转到了edit页面的路由,错误是渲染edit页面阶段触发的,不是点击entry页面链接的时候触发的。
修复方法
直接修改edit.html里的表单action,传入entry参数即可,你渲染edit.html的时候已经给模板传递了entryTitle变量,直接用就行:
<form action="{% url 'edit' entry=entryTitle %}" method="POST">
排查思路参考
以后碰到Django的NoReverseMatch错误,可以先看报错信息里的当前访问路径,先定位是哪个页面渲染阶段出的问题,再检查这个页面里所有用到{% url %}标签、以及视图里用到reverse函数的地方,核对参数是否和urls.py里的路径定义匹配即可。
内容的提问来源于stack exchange,提问作者AB-89v1
相关产品推荐
相关产品推荐

