Django - обратный путь не найден для включенного шаблона URL - PullRequest
0 голосов
/ 14 марта 2019

У меня на старом сайте Django 1.8 (извините ...) есть следующее:

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

, который загружает URL-адреса гонок:

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

Функция просмотраопределяет значение по умолчанию для аргумента типа:

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+)/$']

Чего мне не хватает?

Ответы [ 2 ]

1 голос
/ 14 марта 2019

Для вашего шаблона url необходимо передать 2 переменные: type и season: Таким образом, вы передаете только season и ничего для type.

Попробуйте добавить тип как:

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

где my_type - переменная вашего типа.

0 голосов
/ 14 марта 2019

Я вижу, что вы используете параметры по умолчанию в ваших представлениях.Итак, вы ожидаете, что если вы не передаете параметр type через шаблон, для type будет установлено значение horse по умолчанию.

Все хорошо, но в ваших основных шаблонах URL вы должны быть в состоянии соответствовать правилам, где не передается ни один параметр.Вы можете попробовать что-то вроде:

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

Эта конфигурация помогает вам зафиксировать оба случая, когда вы указываете параметр type или нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...