1

我正在使用 django-registration 并在我的 settings.py 中将登录和注销 url 设置为

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 文件中可以修复错误?

4

2 回答 2

1

您正在为您的包含提供一个namespace参数。这导致,除其他外,您在使用reverse()函数或{% url %}模板时也必须提供命名空间。

有关详细信息,请参阅https://docs.djangoproject.com/en/dev/topics/http/urls/#url-namespaces

于 2013-04-24T15:18:21.783 回答
0

因为第一个包含users/在 url 正则表达式中,这是您想要达到的。

于 2013-04-24T15:13:38.503 回答