首页 > 解决方案 > Django - 找不到包含的 URL 模式的反向

问题描述

我在旧的 Django 1.8(对不起...)站点中有以下内容:

url(r"^racing/(?P<type>(dog|horse|pigeon))/", include("racing.urls")),

它引入了赛车网址:

urlpatterns = patterns("racing.views",
    url(r"^(?P<season>\d+)/$", "season_view", name="season_home"),
}

view 函数为 type 参数定义了一个默认值:

def season_view(request, season, type="horse")

在我看来,这意味着我应该能够(在模板中)这样做:

{% url "season_home" season=nav.season.year %}

但它抛出一个错误:

Reverse for 'season_home' with arguments '()' and keyword arguments '{u'season': 2019L}' not found. 1 pattern(s) tried: [u'racing/(?P<type>[-\\w]+)/(?P<season>\\d+)/$']

我错过了什么?

标签: django

解决方案


您的 url 模式需要传递 2 个变量:typeseason: 所以您只传递season.type

尝试添加如下类型:

{% url "season_home" type=my_type season=nav.season.year %}

my_type你的类型变量在哪里。


推荐阅读