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

Django同一视图处理对象增改时出现NoReverseMatch错误如何解决

错误原因
  • 报错的核心是URL反向解析不匹配:你配置的polls:adm_group_detail这个URL名称,绑定的路由规则要求必须传入comp_slug和grp_id两个参数,但是你在adm_group_detail.html模板中调用该URL名称时,创建场景(grp_id=0)下只传了comp_slug一个参数,因此解析失败。
  • 你点击新建按钮能正常进入视图是因为按钮用的是polls:adm_create_group这个名称,对应的路由本来就不需要传grp_id,问题出在渲染详情页模板的环节。
解决方法

方案1:模板中做场景判断

在模板里需要生成该视图URL的位置(比如表单action、跳转链接)根据grp_id的值选择对应的URL名称:

{% if grp_id > 0 %}
    {% url 'polls:adm_group_detail' comp_slug grp_id %}
{% else %}
    {% url 'polls:adm_create_group' comp_slug %}
{% endif %}

方案2:优化URL配置(更推荐)

把两个路由的名称统一为adm_group_detail,和视图的默认参数逻辑对齐,后续调用不需要额外判断:

# 修改原来的两条路由配置
path("<slug:comp_slug>/admin_group_detail/", views.adm_group_detail, name="adm_group_detail"),
path("<slug:comp_slug>/admin_group_detail/<int:grp_id>/", views.adm_group_detail, name="adm_group_detail"),

修改后不管是创建还是更新场景,都可以直接用同一个URL名称调用:

  • 创建场景:{% url 'polls:adm_group_detail' comp_slug %}
  • 更新场景:{% url 'polls:adm_group_detail' comp_slug grp_id %}
    Django会自动匹配对应的路由规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 10:36:03