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

Django点击编辑表单触发NoReverseMatch错误及排查

解决Django中NoReverseMatch错误:Reverse for 'editar_arvore' with arguments '('',)' not found

我一眼就看出问题出在模板变量的引用上,咱们来一步步捋清楚:

问题根源

你在ver_arvore.html的循环里犯了个变量名混淆的错误:

<td><a href="{%url 'arvore:editar_arvore' arvore.id %}"> {{ equipamentos.nome }}</a></td>

这里的arvore是视图传递过来的查询集/分页对象,它是一组数据的集合,根本没有id属性。而循环里的单个条目是equipamentos,这才是拥有id属性的单个Arvore实例。当你用arvore.id时,实际上传递了空值'',这就触发了路由匹配错误——因为editar_arvore路由要求必须传入一个整数类型的id参数。

修复步骤

只需要把模板里的变量名改对就行:
修改ver_arvore.html中的编辑链接代码:

<!-- 错误写法 -->
<td><a href="{%url 'arvore:editar_arvore' arvore.id %}"> {{ equipamentos.nome }}</a></td>

<!-- 正确写法 -->
<td><a href="{%url 'arvore:editar_arvore' equipamentos.id %}"> {{ equipamentos.nome }}</a></td>

把arvore.id替换为equipamentos.id,这样就能正确传递当前循环条目的id值给编辑路由了。

额外验证

你的editar_arvore.html里的变量引用是正确的,因为在editar_arvore视图中,你传递的arvore是通过get_object_or_404获取的单个Arvore实例,它确实有id属性,所以那里的arvore.id没问题。

另外,你的ver_arvore视图逻辑是正常的,无论是分页还是搜索过滤,最终传递给模板的arvore都是合法的查询集,循环遍历也没问题,只是模板里的变量名用错了而已。


内容的提问来源于stack exchange,提问作者Alexandre das Neves Rodrigues

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 07:27:59