反向' password_reset_done'未找到。 ' password_reset_done'不是有效的视图函数或模式名称

时间:2017-10-31 10:26:04

标签: python django

我的django" password_reset_done"有问题。 当我尝试打开 accounts / reset-password 时出现此错误。 但是,如果我打开网址 accounts / reset-password / done ,则可以正常工作。

" accounts"的URLS.PY应用

from django.conf.urls import url
from django.contrib.auth.views import login , logout, password_reset, 
    password_reset_done
from . import views

urlpatterns = [
    url(r'^register/$', views.register, name='register'),
    url(r'^profile/$', views.profile, name='profile'),
    url(r'^profile/prpage/(\d+)/$', views.profile, name='prpage'),
    url(r'^profile-edit/$', views.profiledit, name='profile-edit'),
    url(r'^login/$', login ,{'template_name':'accounts/login.html'}, 
        name='login'),
    url(r'^logout/$', views.logout_view, name='logout'),
    url(r'^profile/(?P<proj_id>\d+)/$', views.userprojectpage, 
        name='userprojectpage'),
    url(r'^changepassword/$', views.changepassword, name='changepassword'),
    url(r'^reset-password/$', password_reset, name='reset_password'),
    url(r'^reset-password/done/$', password_reset_done, 
        name='password_reset_done'),
] 

请帮忙!在此先感谢)

2 个答案:

答案 0 :(得分:1)

添加基于类的视图PasswordResetView success_url 参数。这将替换password_reset_done的默认路由

url(r'^reset/$',PasswordResetView.as_view(
    template_name='password_reset.html',
    email_template_name='password_reset_email.html',
    subject_template_name='password_reset_subject.txt',
    ...
    success_url = reverse_lazy('accounts:password_reset_done')
    ...
    ...
),name='password_reset'),

答案 1 :(得分:0)

11做了一些更改,看起来像password_reset,password_reset_done无法导入,因此显示有关此URL https://github.com/django/django/blob/stable/1.11.x/django/contrib/auth/views.py的错误。

有两种方法可以解决以上错误。

  1. 要解决此错误,请将url(r),include('django.contrib.auth.urls'))添加到项目中的主urls.py中。这将停止该错误,并将您的网址保留在您的帐户中: url(r'^ reset-password / $',password_reset,name ='reset_password'), url(r'^ reset-password / done / $',password_reset_done,     name ='password_reset_done'), 我已经解决了上述错误,并且工作正常。

  2. 第二种解决错误的方法与上面的第一个选项不同,从主urls.py文件和您的url中删除url(r'',include('django.contrib.auth.urls'))。 account / urls.py添加以下URL: url(r'^ reset-password / $',password_reset,     {'template_name':'reset_password.html',      'post_reset_redirect':'accounts:password_reset_done',      'email_template_name':'reset_password_email.html'},      name ='reset_password'),

    url(r'^ reset-password / done / $',password_reset_done,     {'template_name':'reset_password_done.html'},name ='password_reset_done'),

    url(r'^重置密码/确认/(?P[0-9A-Za-z]+)-(?P.+)/$',     password_reset_confirm,{'template_name':'reset_password_confirm.html',     'post_reset_redirect':'accounts:password_reset_complete'},     name ='password_reset_confirm'),

这是第二个解决方案,并且可以正常工作。

我希望能帮助您解决问题,并且对您的延迟表示歉意。我已经离开了。

DilMac