繁体   English   中英

未找到“password_reset_confirm”。 'password_reset_confirm' 不是有效的视图 function 或模式名称

[英]'password_reset_confirm' not found. 'password_reset_confirm' is not a valid view function or pattern name

我不断收到此错误:

NoReverseMatch 在 /accounts/password_reset/ 找不到“password_reset_confirm”的反向。 'password_reset_confirm' 不是有效的视图 function 或模式名称

到目前为止,以下是我的代码:

from django.conf.urls import url
from . import views
from django.urls import include
from django.contrib.auth import views as auth_views


app_name = 'accounts'

urlpatterns = [
    url(r'^login/$', views.login_view, name='login_view'),
    url(r'^register_view/$', views.register_view, name='register_view'),
    url(r'^logout/$', views.logout_view, name="logout_view"),
    url(r'^profile_view/$', views.profile_view, name="profile_view"),
    url(r'password_change/$',auth_views.PasswordChangeView.as_view(template_name='password_change.html',success_url='/accounts/password_change_done')),
    url(r'password_change_done/',auth_views.PasswordChangeDoneView.as_view(template_name='password_change_done.html')),
    url(r'password_reset/$',auth_views.PasswordResetView.as_view(template_name='registration/password_reset_form.html',email_template_name='registration/password_reset_email.html',subject_template_name='registration/password_reset_email.txt',success_url='/accounts/password_reset_done/',from_email='mpho.maleka3@gmail.com')),
    url(r'password_reset_done/',auth_views.PasswordResetDoneView.as_view(template_name='registration/password_reset_done.html')),
    url(r'password_reset_confirm/(?P<uidb64>[0-9A-Za-z_\-]+)/(?P<token>[0-9A-Za-z]{1,13}-[0-9A-Za-z]{1,20})/$',auth_views.PasswordResetConfirmView.as_view(template_name='registration/password_reset_confirm.html',success_url='/accounts/password_reset_confirm/'), name='password_reset_confirm'),
    url(r'password_reset_complete/',auth_views.PasswordResetCompleteView.as_view(template_name='registration/password_reset_complete.html')),
]

您需要知道 django 使用名称为password_reset_confirm的电子邮件主题的默认模板 (password_reset_email.html),但您使用的是名称空间 acocunts: password_reset_confirm ,您需要做的就是

  1. 使用此 attr email_template_name覆盖模板路径
auth_views.PasswordResetView.as_view(
  template_name ='accounts/registration/password_reset.html',
  email_template_name = 'accounts/registration/password_reset_email.html'),
  1. settings.py设置您的电子邮件配置以发送您的电子邮件,而不会出现错误(Errno 111)连接被拒绝

要让 Django 使用您的应用程序的registration/password_reset_form.html'模板,您需要将该应用程序移至INSTALLED_APPS设置中的django.contrib.admin上方

请注意,Django 并不能轻松地将命名空间与密码重置视图一起使用。 一旦你修复了这个NoReverseMatch ,你可能会发现你必须修复类似的错误。 将您的密码重置 URL 模式移动到没有命名空间的urls.py中可能会更容易。

而不是这样写

重设密码
重置密码完成
重置密码_确认
重置密码完成

你需要这样写

重设密码
密码重置完成
密码重置确认
密码重置完成

它对我有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM