Django не может найти страницу с несколькими одинаковыми URL-путями

Я пытаюсь создать Django-сайт с различными представлениями/моделями, расположенными на одном уровне структуры URL.

Вот структура URL, которую я пытаюсь создать:

  • ДОМАШНЯЯ СТРАНИЦА -- Страна --- Штат ---- Город --- Тема ---- Статья

Я использую следующий код в urls.py:

urlpatterns = [
    path(
        "<slug:country_slug>/<slug:state_slug>/<slug:city_slug>/",
        CityIndex.as_view(),
        name="city_index",
    ),
    path(
        "<slug:country_slug>/<slug:topic_slug>/<slug:article_slug>/",
        ArticleDetail.as_view(),
        name="article_detail",
    ),
    path(
        "",
        HomeIndex.as_view(),
        name="home",
    ),

Путь к индексу города работает нормально. Проблема заключается в попытке получить доступ к статье. Django пытается найти только первый путь URL. Я ввожу URL: "example-country/example-topic/example-article"

Django выдает следующее сообщение об ошибке:

Page not found (404)

No Destination matches the given query.

Request Method:     GET
Request URL:    http://127.0.0.1:8000/example-country/example-topic/example-article/
Raised by:  content.views.destinations.CityIndex

Похоже, что, поскольку шаблон похож на шаблон URL для "city_index", он пытается сопоставить его, а затем возвращает ошибку 404. Он не переходит к проверке следующего шаблона URL для "article_detail", который будет соответствовать статье и возвращать шаблон.

Я попробовал переключить URL-путь "article_detail" на первый, выше "city_index".
В результате "article_detail" корректно возвращает шаблон, а "city_index" - нет.

Эффективно, Django подберет URL для первого шаблона, но затем второй шаблон URL вернет 404.

Спасибо за помощь!

Вернуться на верх