Ответ
Ключевое различие заключается в настройке Django APPEND_SLASH, которая по умолчанию установлена в True.
Когда APPEND_SLASH = True:
- Если пользователь запрашивает URL без слэша на конце (например,
/articles), а вurls.pyопределен шаблон со слэшем (path('articles/', ...)), Django автоматически выполнит 301 редирект на/articles/. - Это сделано для обеспечения каноничности URL, чтобы поисковые системы не индексировали одну и ту же страницу по двум разным адресам.
Пример (urls.py):
from django.urls import path
from . import views
urlpatterns = [
# Шаблон определен со слэшем
path('articles/', views.article_list, name='article-list'),
]
- Запрос на
/articles→ 301 Redirect на/articles/ - Запрос на
/articles/→ 200 OK
Если установить APPEND_SLASH = False в settings.py, то при запросе на /articles будет возвращена ошибка 404 Not Found.
Ответ 18+ 🔞
Да ты посмотри, какая заковыка-то, блядь! Всё дело в этой настройке Django, которая APPEND_SLASH. Она по дефолту, как здоровый лось, стоит на True, и вот что из этого выходит, ёпта!
Когда эта штука включена, происходит следующее, блядь:
- Допустим, какой-то распиздяй запросил у тебя адрес без слеша, типа
/articles. А у тебя вurls.pyэтот путь записан со слешом, как порядочный человек —'articles/'. Так вот, Django, видя это безобразие, не моргнув глазом, делает 301 редирект на правильный адрес,/articles/. - Всё это ради, блядь, каноничности URL, чтобы поисковики, эти мудозвоны, не индексировали одну и ту же страницу по двум разным адресам. Чистота, блядь, порядок!
Вот смотри, пример (urls.py):
from django.urls import path
from . import views
urlpatterns = [
# Шаблон определен со слэшем
path('articles/', views.article_list, name='article-list'),
]
- Запрос на
/articles→ 301 Redirect на/articles/(Вот тебе, неуч, учи матчасть!) - Запрос на
/articles/→ 200 OK (Молодец, красава, всё правильно сделал)
А теперь представь, ты взял и в settings.py вырубил эту фичу, поставил APPEND_SLASH = False. Что будет? А будет пиздец, блядь! Тот же запрос на /articles упрётся рогом в 404 Not Found. Ищи-свищи свою страницу, волк тебя дери! Вот так вот, в рот меня чих-пых, одна настройка — и всё летит в тартарары.