Проблема с маршрутизацией в джанго

Попробую на словах объяснить суть. Создал меню и левый сайдбар со ссылками, все работает. Затем добавил модель Article. А теперь мои действия, после которых заглючило. За главную страницу отвечало представление с TemplateView, я переделал его на ListView и отображаю на ней экземпляры Article. Это работает. Затем сделал представление ArticleDetail со своим url, тоже работает. Но теперь почему-то при переходе по другим ссылкам возникает ошибка 404. Raised by: views.ArticleDetail Почему ArticleDetail вызывается, ведь не должно?

settings.urls
        path('', include('app1.urls')),
        path('admin/', admin.site.urls),
        path('users/', include('app2.urls')),
        path('forum/', include('app3.urls')),

В сообщении об ошибке выдает url, которые найдены

[name='main_page']
<slug:article_slug>/ [name='article']

Но их должно быть порядка 15-ти. Что не так с ArticleDetail?


Ответы (1 шт):

Автор решения: Za Ars

Порядок важен. Если вы орбрабатываете строку url. Уверен у вас в app1.urls есть стрoка path('<slug:slug>/', ...) или что то подобное. Так как slug - набор букв, цифр и некоторых других знаков, django пытается найти обработать этот url так как адрес запроса полностью подошел к шаблону url. А так как объекта с таким slug (или какое поле вы там получаете) нет, выходит 404 ошибка.

Учитывайте, что Django ищет первое совпадение под шаблон, и если такое случилось, все ниже стоящие не будут проверены.

И да, это написано в документации, если поискать про urlpatterns )

→ Ссылка