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.
Спасибо за помощь!