Python- Django : Где Django "добавляет слеш"?
Мне интересно...
Если у меня есть приложение под названием magazine, и его urlpatterns
внутри urls.py
имеет следующий вид :
from django.urls import path
from . import views
path("articles/<int:pk>", views.get_article, name="article")
. без прицепного слеша, то Django должен "добавлять слеш" по умолчанию, верно?
Где добавлена эта косая черта?
То есть, он добавляется только тогда, когда я вручную пишу url в браузере?
Я имею в виду, если бы в шаблоне был тег якоря, такой как этот :
<a href="{% url 'magazine:article' 5 %}"> Article 5 </a>
.. Разве он не пойдет и не получит путь выше без прицепного слеша, а затем ошибку Not Found?
Означает ли эта настройка APPEND_SLASH, что я не могу или невозможно перейти по указанной выше ссылке без добавления слеша в конце?
Косая черта не добавляется. Это означает, что вы можете посетить эту страницу, например, с помощью /arcticles/5
(для доступа к статье с первичным ключом 5).
Django имеет настройку APPEND_SLASH
[Django-doc]. Если он установлен в значение True
(по умолчанию), то сначала будет сделана попытка найти путь с заданными шаблонами URL, а если это не удастся, то будет добавлена косая черта и поиск повторится.
Однако более логичным является использование пути в конце, поэтому я бы посоветовал переписать путь следующим образом:
path('articles/<int:pk>/', views.get_article, name='article')