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

Django BlogPost项目添加编辑功能时出现NoReverseMatch异常求助

问题排查与修复方案

1. 视图函数edit_entry的重定向错误

在views.py的edit_entry函数中,POST请求处理完成后的重定向逻辑存在两处错误:

# 错误代码
return redirect('blogs:entries', object_id=object.id)
  • 未定义变量object,应使用已获取的文章实例entry;
  • entries路由在urls.py中无参数要求,无需传递object_id。

修复后代码:

return redirect('blogs:entries')

2. 编辑模板的上下文缺失与语法问题

你提供的模板文件名为edit_entries.html,但视图函数中渲染的是edit_entry.html,需先统一文件名(建议改为edit_entry.html),再修复以下问题:

(1)模板上下文缺少文章实例

视图函数edit_entry仅向模板传递了form,未传递当前编辑的文章对象,导致模板中object.id无有效值,触发NoReverseMatch异常。

  • 修复视图上下文:
context={'form':form, 'entry': entry}
  • 模板中修改URL反转参数:
<form action="{% url 'blogs:edit_entry' entry.id %}" method="post">

(2)表单代码被错误注释

模板中表单代码被#注释,无法正常渲染,需移除注释符号:

<form action="{% url 'blogs:edit_entry' entry.id %}" method="post">
    {% csrf_token %}
    {{ form.as_p }}
    <button name="submit">save</button>
</form>

3. 额外确认项

检查entries.html中的编辑链接逻辑,目前{% url 'blogs:edit_entry' object.id %}是正确的,因为entries视图已传递有效的objects上下文,循环中的object为合法的BlogPost实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 10:05:15