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