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

What are the default namespaces for django authentication URLs?

我将我的应用 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('accounts:login') 这样的 reverse 正在工作,但是 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 正在运行。我还尝试将我项目的 urls.py 中的 path('accounts/', include('django.contrib.auth.urls')) 更改为 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'),
]  

为什么使用 accountsauth 命名空间 password_reset 会失败?是否有包含可以使用的默认命名空间的文档页面?

据我通过阅读源代码得知它们根本没有命名空间,您通常只能像现在这样通过名称引用它们。

如果您想让它们命名空间,您可以将它们包含在您的 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')),
]