You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django表单action用{% url 'edit' %}出现NoReverseMatch错误原因咨询

问题原因及解决办法

核心原因

你的edit路由定义包含必需的title参数,但模板中使用{% url 'edit' %}时没有传递该参数,导致Django无法反向解析出合法的URL,从而抛出NoReverseMatch错误。

具体分析

  1. 从urls.py的配置来看,edit路由明确要求接收一个字符串类型的title参数:
path("wiki/<str:title>/edit", views.edit, name="edit")

Django的反向URL解析需要你提供这个参数,才能生成类似/wiki/CSS/edit这样的具体URL。

  1. 模板里的{% url 'edit' %}只指定了路由名称,没有传递title参数,Django不知道要为哪个条目生成编辑页面的提交地址,自然无法完成解析。

  2. 移除action属性后表单能正常工作,是因为表单默认会将数据提交到当前页面的URL(也就是你打开的/wiki/CSS/edit),这个URL本身已经包含了title参数,POST请求能被edit视图正确接收处理。

解决方法

有两种可行的修正方式:

  • 方式一:在url标签中传递title参数
    修改模板里的表单action部分,补充title参数:
<form action="{% url 'edit' title=title %}" method="post">
    {% csrf_token %} 
    <textarea id="ctnt" name="content">{{ge}}</textarea>
    <br>
    <input type="submit" value="Submit">
</form>

这样Django就能正确生成带对应title的提交URL。

  • 方式二:保留无action的写法
    如果当前页面的URL就是正确的提交地址,直接省略action属性是完全没问题的,表单会自动提交到当前页面,这种写法更简洁。

内容的提问来源于stack exchange,提问作者usgar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 00:18:20