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

为什么Django模板调用带参数路径时出现URL反向解析报错?

问题原因
  • 你的urls.py中仅给无参数的根路径路由配置了name='home',带year和month参数的第二条路由没有配置对应的name属性
  • Django做反向路由解析时,只能匹配到你命名为home的无参数根路由,你传入两个参数后找不到对应匹配的路由规则,因此抛出报错。错误信息中提到的tried: ['$']也能佐证这一点,Django只尝试了匹配根路径规则。
解决方法

你可以任选以下两种方案之一修改:

方案1:给带参数的路由追加相同的name属性

Django支持同一个name对应多个路由规则,反向解析时会自动根据传入的参数匹配对应的路由:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name = 'home'),
    # 给带参数的路由也添加name='home'
    path('<int:year>/<str:month>/', views.home, name = 'home'),
]

修改完成后你原来的模板代码{% url 'home' '2021' 'November' %}就可以正常解析了。

方案2:给带参数的路由设置独立的name

如果你希望区分两个路由的调用场景,可以给带参数的路由单独命名,修改urls.py:

from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name = 'home'),
    # 给带参数的路由设置独立name
    path('<int:year>/<str:month>/', views.home, name = 'home_with_date'),
]

对应的模板代码修改为:

<li class="nav-item">
  <a class="nav-link" href="{% url 'home_with_date' '2021' 'November' %}">November</a>
</li>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 18:18:03