Я просматривал Django документов , здесь речь идет об удалении жесткого кодирования в URL-адресах, чтобы в будущем было проще изменять URL-адреса.
Вот как URL-адрес в жестком коде выглядит как
<li><a href="/polls/{{ question.id }}/">{{ question.question_text }}</a></li>
После удаления строки в жестком коде
<li><a href="{% url 'detail' question.id %}">{{ question.question_text }}</a></li>
Это все хорошо и сделано. Что меня смущает, так это namespacing
part
Взгляните сюда
from django.urls import path
from . import views
app_name = 'polls'
urlpatterns = [
path('', views.index, name='index'),
path('<int:question_id>/', views.detail, name='detail'),
path('<int:question_id>/results/', views.results, name='results'),
path('<int:question_id>/vote/', views.vote, name='vote'),
]
Здесь введена переменная app_name
для хранения имени приложения, в данном случае polls
.
Но в URL-адресе они снова указали polls
, не значит ли это, что каждый URL-адрес будет содержать имя приложения в виде жестко закодированной строки?
<li><a href="{% url 'polls:detail' question.id %}">{{ question.question_text }}</a></li>
Так не значит ли это, что мы вернулись на круги своя (проблема с жестко закодированными URL-адресами)
Каков шаблон проектирования, стоящий за этим. Почему они не могут просто посмотреть на папку приложения и получить оттуда имя приложения?