0

我想在两个不同的父路由中包含一些 django 应用程序的 url。问题是,如果我尝试这样做,那么我将无法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 的名称上附加某种前缀,或者是否有任何技巧可以破解它!

4

1 回答 1

1

您可以使用命名空间

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

于 2019-05-26T12:07:00.583 回答