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

Django NoReverseMatch错误:updatekwalificatie路由反向解析失败求助

错误根因

你模板中的迭代变量和传参变量名不匹配:for循环定义的迭代变量是i,但反向解析updatekwalificatie路由时使用了未定义的kwalificatie.id,该变量取值为空字符串,和路由要求的非空pk参数规则不匹配,因此抛出NoReverseMatch异常。

修复方案

1. 核心修复(必做)

修改模板中反向解析的传参,将不存在的kwalificatie.id替换为循环迭代变量i.id:

<td><a class="btn btn-sm btn-outline-secondary" href="{% url 'updatekwalificatie' i.id %}">Update</a></td>

2. 可选优化项

  • 路由参数类型调整:将pk的类型从str改为int,匹配数据库ID的数字属性,避免非法字符参数传入视图:
# urls.py
path('updateKwalificatie/<int:pk>/', views.updateKwalificatie, name='updatekwalificatie'),
  • 视图异常兜底:用get_object_or_404替代直接get查询,避免传入不存在的ID时抛出服务端错误:
# views.py
from django.shortcuts import get_object_or_404

def updateKwalificatie (request, pk):
    kwalificatie = get_object_or_404(Kwalificaties, id=pk)
    form = kwalificatie_beheer(instance=kwalificatie)
    context = {'form': form}
    return render(request,'accounts/kwalificatiebeheer.html', context)
  • 变量名语义化优化:将循环迭代变量从无意义的i改为kwalificatie,降低后续代码维护的出错概率:
{% for kwalificatie in kwalificaties %}
<tr>
    <td>{{kwalificatie.naam}}</td>
    <td>{{kwalificatie.ehbo}}</td>
    <td>{{kwalificatie.treinen}}</td>
    <td>{{kwalificatie.extra}}</td>
    <td><a class="btn btn-sm btn-outline-secondary" href="{% url 'updatekwalificatie' kwalificatie.id %}">Update</a></td>
    <td><input type="submit" value="Verwijder"></td>
</tr>
{% endfor %}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:27:01