Пытаясь понять django URL-адрес пространства - PullRequest
0 голосов
/ 22 апреля 2020

Я просматривал 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-адресами)

Каков шаблон проектирования, стоящий за этим. Почему они не могут просто посмотреть на папку приложения и получить оттуда имя приложения?

...