Django传title参数调用{% url 'edit' %}时出现Reverse路由未找到错误
问题根因
路由反向解析失败的核心原因是三者参数定义不匹配:
urls.py中定义的edit路由没有声明接收title路径参数- 模板调用
{% url 'edit' %}时传入了title关键字参数 - 视图函数
edit要求必须接收title位置参数
解决步骤
- 修改urls.py的edit路由配置
给edit路由增加<str:title>路径参数,并且调整路由顺序放在通配路由<str:entry>之前(Django按从上到下的顺序匹配路由,通配路由会拦截所有未匹配的单层路径,放在后面会导致edit路由失效)。
修改后的urls.py示例:
urlpatterns = [ path("", views.index, name="index"), path("error", views.error, name="error"), path("newPage", views.newPage, name="newPage"), path("random", views.random, name="random"), # 新增title路径参数,顺序放在<str:entry>之前 path("edit/<str:title>", views.edit, name="edit"), path("<str:entry>", views.markdown, name="entry") ]
- 校验模板参数
确认渲染entry.html时传入的entry变量是合法的字符串类型词条标题,没有空值、特殊字符导致路径不合法的问题。
可选方案(查询参数实现)
如果你不想把title放在路径中,想通过GET查询参数传递,可以按以下方式修改:
- urls.py的edit路由保持原有无参数的配置
- 模板修改为:
<a href="{% url 'edit' %}?title={{ entry }}">Edit Page</a>
- 视图函数修改为:
def edit(request): title = request.GET.get("title") content = util.get_entry(title) return render(request, "encyclopedia/newPage.html", { "title": title, "content": content })
内容的提问来源于stack exchange,提问作者amiller_lite
相关产品推荐
相关产品推荐

