Как добавить префикс ко всем именам URL при использовании функции include - django - PullRequest
0 голосов
/ 26 мая 2019

Я хочу включить URL-адреса некоторых приложений django в два разных родительских маршрута.Проблема в том, что если я попытаюсь это сделать, то я не смогу правильно использовать функцию reverse для URL этого приложения.

Вот где я застрял.Следующие конфигурации URL приведут к созданию двух разных наборов URL, например:

/api/v4/auth/{login, register, ...}
/api/auth/{login, register, ...}

приложение A (urls.py)

from auth import views

urlpatterns = [
    url(r'^login/', views.login, name='login'),
    url(r'^register/', views.register, name='register'),
    ...
]

основное приложение (urls.py)

from auth import urls as auth_urls

urlpatterns = [
    url(r'^api/v4/auth/', include(auth_urls)),
    url(r'^api/auth/', include(auth_urls)),
    ...
]

Теперь, если я попытаюсь использовать функцию reverse, как показано ниже:

def get_login_url():
    return reverse('login')

Я, вероятно, получу один из возможных выходных данных, которые я не знаю, как управлять!

Я не знаю, поддерживает ли django добавление какого-либо префикса к именам включаемых URL-адресов или есть какие-то уловки, чтобы взломать его или нет!

1 Ответ

1 голос
/ 26 мая 2019

Вы можете использовать пространства имен

from auth import urls as auth_urls

urlpatterns = [
    url(r'^api/v4/auth/', include(auth_urls, namespace='auth1'))),
    url(r'^api/auth/', include(auth_urls, namespace='auth2'))),
    ...
] 

Таким образом, вы сможете полностью изменить все auth1:login

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