我更改了我的应用程序的 urls.py
拥有一个命名空间 app_name = 'somename'
.然后做了这些,
reverse('url-name')
至 reverse('somename:url-name')
. {% url 'url-name' %}
至 {% url 'somename:url-name' %}
. {% if request.resolver_match.url_name == "url-name" %}
至 {% if request.resolver_match.url_name == "somename:url-name" %}
. 对于
accounts
应用程序,我只有两个自定义 View login
和 signup
.所以一个 reverse
喜欢 reverse('accounts:login')
正在工作,但 reverse('accounts:password_reset')
(默认 django 身份验证的一部分)不起作用。这是我尝试过的,
reverse('accounts:password_reset')
与 reverse('auth:password_reset')
. 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'))
.都没有工作。项目/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'))
]
帐户/urls.py
app_name = 'accounts'
urlpatterns = [
path('signup/', views.CustomSignup.as_view(), name='signup'),
path('login/', views.CustomLogin.as_view(), name='login'),
]
为什么要命名空间
password_reset
与 accounts
和 auth
失败?是否有可以使用默认命名空间的文档页面?
最佳答案
据我所知,通过阅读源代码,它们根本没有命名空间,您通常只能像现在一样通过名称来引用它们。
如果你想让它们命名空间,你可以将它们包含在你的 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')),
]
关于python - django 身份验证 URL 的默认命名空间是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62192132/