Какова цель app_name в urls.py в Django? - PullRequest
1 голос
/ 16 апреля 2020

Когда include() извлекает urlconf из приложения Django в urls.py проекта, имя какого-либо приложения (или пространства имен) должно быть указано как:

  • app_namespace in include((pattern_list, app_namespace), namespace=None) в основном urls.py

или

  • app_name переменная в приложении urls.py.

Так как, я думаю, Django 2, второй метод является предпочтительным, хотя я скопировал первую сигнатуру функции из документации Django 3. Но это не главное.

Мое текущее понимание namespace параметра include() состоит в том, что это то, что я использую при использовании reverse().

Какова цель app_name в приложении urls.py или app_namespace в основном urls.py?
Это одно и то же?
Как оно используется Django?

Существующие вопросы (и ответы), которые я нашел здесь, объясняют, КАК мне следует указывать это, а не ПОЧЕМУ.

1 Ответ

0 голосов
/ 16 апреля 2020

С https://docs.djangoproject.com/en/3.0/topics/http/urls/#introduction:

Пространства имен URL позволяют однозначно изменять шаблоны именованных URL, даже если разные приложения используют одни и те же имена URL. Для сторонних приложений рекомендуется всегда использовать URL-адреса в пространстве имен (как мы делали в руководстве). Точно так же это также позволяет вам изменять URL-адреса, если развернуто несколько экземпляров приложения. Другими словами, поскольку несколько экземпляров одного приложения будут совместно использовать именованные URL-адреса, пространства имен обеспечивают способ разделения этих именованных URL-адресов.

...