django身份验证URL的默认名称空间是什么?

问题描述 投票:0回答:1

我将应用程序的urls.py更改为具有名称空间app_name = 'somename'。然后做这些,

  1. reverse('url-name')更改为reverse('somename:url-name')
  2. {% url 'url-name' %}更改为{% url 'somename:url-name' %}
  3. {% if request.resolver_match.url_name == "url-name" %}更改为{% if request.resolver_match.url_name == "somename:url-name" %}

对于accounts应用,我只有loginsignup的两个自定义视图。因此,像reverse这样的reverse('accounts:login')可以正常工作,但是reverse('accounts:password_reset')(默认django auth的一部分)不起作用。

这是我尝试过的,

  1. reverse('accounts:password_reset')替换了reverse('auth:password_reset')
  2. reverse('accounts:password_reset')替换了reverse('password_reset')

解决方案1无效。解决方案2正在运行。我还尝试将项目path('accounts/', include('django.contrib.auth.urls'))中的urls.py更改为path('accounts/', include('django.contrib.auth.urls', namespace='auth'))path('accounts/', include('django.contrib.auth.urls, namespace='accounts'))。都不起作用。

project / urls.py

urlpatterns = [
    path('', include('core.urls')),
    path('admin/', admin.site.urls),
    path('accounts/', include('accounts.urls')),
    path('accounts/', include('django.contrib.auth.urls')),
    path('books/', include('library.urls'))
]

accounts / urls.py

app_name = 'accounts'
urlpatterns = [
    path('signup/', views.CustomSignup.as_view(), name='signup'),
    path('login/', views.CustomLogin.as_view(), name='login'),
]  

为什么用password_resetaccounts命名auth的间距失败?是否有一个文档页面,其中包含可以使用的默认名称空间?

python django namespaces django-urls django-authentication
1个回答
0
投票

据我所读的源代码可以看出,它们根本没有命名空间,通常您现在只能按名称引用它们。

如果要为其命名空间,可以将它们包含在accounts'urlpatterns中,而不是项目中,并手动添加命名空间:

app_name = 'accounts'
urlpatterns = [
    path('signup/', views.CustomSignup.as_view(), name='signup'),
    path('login/', views.CustomLogin.as_view(), name='login'),
    path('', include('django.contrib.auth.urls', namespace='accounts')),
]
© www.soinside.com 2019 - 2024. All rights reserved.