我将应用程序的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
应用,我只有login
和signup
的两个自定义视图。因此,像reverse
这样的reverse('accounts:login')
可以正常工作,但是reverse('accounts:password_reset')
(默认django auth的一部分)不起作用。
这是我尝试过的,
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'))
。都不起作用。
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_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')),
]