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')
Вернуться на верх