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

Django模板传递numNom至详情URL遇NoReverseMatch错误求助

解决Django中{% url %}传参引发的NoReverseMatch问题

1. 检查路由配置

首先确认prosmotr路由是否正确定义了参数占位符,参数名必须和视图接收的完全一致,且类型要匹配numNom的实际值类型:

# urls.py
from django.urls import path
from .views import get_viewNum

urlpatterns = [
    # 示例:如果numNom是整数用<int:numNom>,字符串用<str:numNom>
    path('prosmotr/<int:numNom>/', get_viewNum, name='prosmotr'),
]

2. 确认视图函数的参数接收

你的get_viewNum视图必须正确接收这个参数,参数名要和路由里的numNom完全对应:

# views.py
def get_viewNum(request, numNom):
    # 根据numNom获取对应的nomenclature对象
    nomenclature = Nomenclature.objects.get(numNom=numNom)
    # 后续渲染逻辑
    return render(request, 'detail_page.html', {'nomenclature': nomenclature})

如果是类视图,要在get方法中正确捕获该参数。

3. 模板中正确使用{% url %}标签

模板里的按钮链接可以用两种方式传递参数,推荐显式指定参数名避免顺序错误:

<!-- 方式一:显式指定参数名(推荐) -->
<a href="{% url 'prosmotr' numNom=item.numNom %}" class="btn">Просмотр</a>

<!-- 方式二:按路由参数顺序传值 -->
<a href="{% url 'prosmotr' item.numNom %}" class="btn">Просмотр</a>

额外排查要点

  • 在模板中临时添加{{ item.numNom }},确认该值不为空,且类型和路由占位符匹配(比如路由用<int:>但值是字符串会报错)
  • 检查路由的name属性是否确实为prosmotr,注意拼写和大小写
  • 如果路由属于应用命名空间,要加上命名空间前缀,比如{% url 'your_app:prosmotr' numNom=item.numNom %}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:00:52