Обратитесь к пространству имен URL моего (многоразового) приложения в Django - PullRequest
1 голос
/ 07 февраля 2020

Я хочу написать повторно используемое Django приложение.

Я говорю своим пользователям добавить следующее к их urls.py

path('slack/', include(('slack_integration.urls', 'slack_integration'), namespace='slack_integration'),

И в мой urls.py Я хочу иметь представление login_callback.

Теперь, на мой взгляд, мне нужно получить значение slack_integration:login_callback.

Я могу доверять пользователю, что он / она будет интегрировать его с префиксом slack_integration и использовать его. Но это лучшая практика? Можно ли как-то получить имя пространства имен для приложения, если пользователь выберет для него другое имя?

Большое спасибо!

1 Ответ

1 голос
/ 08 февраля 2020

Использование namespace= в urls.py файлах больше не поддерживается, так как оно перемещает что-то определенное c в приложение Django вне пакета Python, который является приложением Django.

В настоящее время рекомендуется определить app_name в файле urls.py внутри приложения Django.

Старый способ: НЕ ДЕЛАЙТЕ ЭТОГО (до Django) 2.0)

root urls.py

path('slack/', include(('slack_integration.urls', 'slack_integration'), namespace='slack_integration'),

Новый способ: ДЕЛАЙ ЭТО! (Django 2.0 +)

root urls.py

from django.urls import path, include

urlpatterns = [
    path('slack/', include(('slack_integration.urls', 'slack_integration')),
]

slack_integration / urls.py

from django.urls import path

app_name = "slack_integrations"

urlpatterns = [
    path('', HomeView.as_view(), name='home'),
]

Как вы можете видеть, это сохраняет пространство имен для шаблонов в самом приложении, а также шаблоны, которые, скорее всего, будут его использовать. Дни дополнительных инструкций о том, как включить приложение, прошли! Удачи.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...