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

Django模板渲染报NoReverseMatch错误:无法匹配exam-detail路由

Django NoReverseMatch 错误解决:反向解析'exam-detail'路由失败

错误信息

NoReverseMatch at /user/admin/package/1/
Reverse for 'exam-detail' with arguments '(4,)' not found. 1 pattern(s) tried: ['user/(admin|staff)/exam/(?P<pk>[0-9]+)/$']

问题代码

HTML模板代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    {{object.name}}
    {{object.price}}
    {% for exam in object.exams.all %}
        <p><a href="{% url 'exam-detail' exam.pk %}">{{exam.name}}</a></p>
    {% endfor %}
</body>
</html>

原urls.py配置

re_path(r'^(admin|staff)/exam/(?P<pk>[0-9]+)/$',ExamDetail.as_view(),name='exam-detail'),

问题原因

原路由用re_path定义了^(admin|staff)的捕获分组,但模板中使用{% url %}标签时只传递了exam.pk作为参数,没有提供admin或staff这个分组对应的参数。Django反向解析路由时,无法匹配到需要两个参数(分组值和pk)的正则路由,因此抛出NoReverseMatch错误。

解决办法

将路由修改为固定路径的path配置,不再需要额外的分组参数:

path('admin/exam/<int:pk>/',ExamDetail.as_view(),name="exam-detail"),

修改后,反向解析exam-detail路由时只需传递pk参数即可匹配成功,错误也就解决了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 15:01:01