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

Django使用UpdateView编辑文章时出现NoReverseMatch错误如何解决

Django UpdateView实现文章编辑时NoReverseMatch错误解决方案

错误根源

报错明确指向post_detail路由解析失败,原因是你在update_post.html模板中调用{% url 'articles:post_detail' %}时没有传入该路由必填的slug参数:
你定义的post_detail路由规则path('post/<slug:slug>', ...)要求必须传递slug参数,但是返回按钮的url调用未传参。

修复方法

修改update_post.html中的返回按钮链接即可,UpdateView会自动将当前编辑的文章对象注入模板上下文,变量名为object或小写模型名post,有两种写法可选:

写法1:直接传递slug参数

将原返回链接代码:

<a class="btn btn-outline-primary" href="{% url 'articles:post_detail' %}" role="button">Назад</a>

修改为:

<a class="btn btn-outline-primary" href="{% url 'articles:post_detail' post.slug %}" role="button">Назад</a>

写法2:调用模型内置方法(更推荐)

你已经在Post模型中定义了get_absolute_url方法,直接调用即可,不用手动拼接参数:

<a class="btn btn-outline-primary" href="{{ post.get_absolute_url }}" role="button">Назад</a>

可选优化点

你Post模型中定义的post_update_date字段当前使用了auto_now_add=True参数,该参数只会在文章第一次创建时写入时间,后续编辑更新不会自动修改时间,如果需要实现每次更新文章自动同步更新时间,可将该字段参数改为auto_now=True:

post_update_date = models.DateTimeField(auto_now=True, verbose_name='Дата обновления публикации')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 20:27:02