Ответ
Ключевое различие заключается в настройке 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.