我正在使用django-registration并在我的settings.py中将登录和注销网址设置为
LOGIN_URL = '/users/login/'
LOGOUT_URL = '/users/logout/'
并在urls.py中设置了
url(r'^users/', include('registration.backends.default.urls', namespace='users')),
除非我尝试访问localhost,否则一切正常:8000 / users / passwords / reset出现错误
NoReverseMatch at /users/password/reset/
Reverse for 'django.contrib.auth.views.password_reset_done' with arguments '()' and keyword arguments '{}' not found.
但是,当我将此行添加到urls.py文件时,一切正常
(r'^users/', include('registration.auth_urls')),
这个解决方案令我感到困惑,因为registration.backends.default.urls包含行
(r'', include('registration.auth_urls')),
应该与添加到项目的urls.py文件中的行做同样的事情。为什么在项目的urls.py文件中添加该行会修复错误?
答案 0 :(得分:1)
您正在为您的include提供namespace
参数。除其他外,这导致您在模板中使用reverse()
函数或{% url %}
时也必须提供命名空间。
有关详细信息,请参阅https://docs.djangoproject.com/en/dev/topics/http/urls/#url-namespaces。
答案 1 :(得分:0)
因为第一个在网址正则表达式中包含users/
,这是您要尝试的内容。