У меня в значительной степени есть app_name
и пространства имен работают хорошо, но у меня есть простое пояснение - и я думаю, что это может быть то, что в моем 2.1 Django, которое могло отличаться в более ранних версиях Django.
У меня есть приложение с именем route
и в его urls.py
у меня есть:
app_name = 'route'
urlpatterns = [
path('first', views.FirstView.as_view(), name='first-view'),
]
В моих views.py
и файлах шаблонов я использую route:first-view
в моих reverse()
вызовах и {% url .. %}
вызовах, и все это работает.
Моя путаница в моем широком проекте urls.py
, где я говорю что-то вроде:
urlpatterns = [
path('route/', include('route.urls', namespace='route')),
]
То, что сводит меня с ума, это то, что кажется, что параметр namespace=
абсолютно ничего не делает. Мой код работает так же, если я пропущу его или даже скажу namespace='abc'
- он кажется на 100% проигнорированным Django 2.1.
Также, если я использую namespace='route'
без установки app_name
, я получаю ошибку: Specifying a namespace in include() without providing an app_name is not supported
.
Если namespace=
игнорируется - тогда я рад просто установить app_name
- я оставлю это - Просто кажется, что у него должна быть цель, которую я просто не могу понять. Или, может быть, это что-то ненужное и из более ранней версии Django.
Примечание: я посмотрел на аналогичный вопрос и ответ , но этот пример не объясняет, как работает пространство имен при использовании path
. Я стараюсь избегать шаблонов URL / регулярных выражений и максимально использую более простой шаблон path
.