我正在尝试使用Django身份验证系统,但我收到错误: enter image description here
'user'是应用名称。
Project的urls.py:
from django.conf.urls import url, include
from django.contrib import admin
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
url(r'^admin/', admin.site.urls),
...
url(r'^user/', include('user.urls', namespace='user')),
...
]
用户/ urls.py:
from django.conf.urls import url, include
from . import views
urlpatterns = [
url(r'^register/$', views.register, name='register'),
url(r'^settings/$', views.settings, name='settings'),
url(r'^settings/password/$', views.password, name='password'),
url(r'^settings/accounts/$', views.configure_accounts,
name='configure_accounts'),
url(r'^settings/accounts/error/$', views.configure_accounts_error,
name='configure_accounts_error'),
url('^', include('django.contrib.auth.urls')),
]
我可以访问/ user / login /,/ user / logout /。当我转到/ user / password_reset /时,我可以输入电子邮件,按“提交”按钮后,会出现错误(如图所示):
NoReverseMatch at /user/password_reset/
Reverse for 'password_reset_done' not found. 'password_reset_done' is not a valid view function or pattern name.
任何想法如何解决这个问题? 非常感谢。
答案 0 :(得分:7)
我也遇到了这个问题。这些帖子已经过时,所以我想给出一个修改后的答案。本质上,PasswordResetConfirmView
具有success_url
的属性,可以在urls.py
上进行设置。
例如...
path('password-reset-confirm/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(
template_name='password-reset-confirm.html', success_url=reverse_lazy(
'user:password_reset_complete')),
name="password_reset_confirm"),
问题是密码重置确认的默认行为。具体来说,它设置success_url = reverse_lazy('password_reset_complete')
。由于您的password_reset_complete
视图位于“用户”应用中,因此无法找到它。默认属性是告诉它在需要查看urls.py
时要查看 root user/urls.py
。覆盖success_url
将解决此问题。
答案 1 :(得分:1)
url(r'^password_reset/$', auth_views.password_reset, {
'post_reset_redirect': '/user/password_reset/done/'
}, name='password_reset'),
url(r'^password_reset/done/$', auth_views.password_reset_done,
name='password_reset_done'),
url(r'^reset/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',
auth_views.password_reset_confirm, {
'post_reset_redirect': '/user/reset/done/'
}, name='password_reset_confirm'),
url(r'^reset/done/$', auth_views.password_reset_complete,
name='password_reset_complete'),
我在user / urls.py中设置了'post_reset_redirect',一切都开始正常了。在重置页面上提交电子邮件后,控制台中没有显示任何内容,因为:
如果系统中不存在提供的电子邮件地址,则此视图不会发送电子邮件,但用户也不会收到任何错误消息。这可以防止潜在攻击者泄露信息。
答案 2 :(得分:0)
在您的user / urls.py中,您似乎没有名为libfreenect2::Frame *rgb = frames[libfreenect2::Frame::Color];//BGRA format
如果你想使用django.auth默认密码重置,那么使用,
/user/password_reset/
您可以在此处更改模板名称。