/ accounts / password-reset /处的NoReverseMatch用于在Django中重置密码

时间:2019-01-01 17:10:44

标签: python django django-models django-forms django-authentication

错误-在“密码重置”页面中提交电子邮件后,在Django中,出现此错误。

  

在/ accounts / password-reset /处未找到与'password_reset_done'相反的NoReverseMatch。 “ password_reset_done”无效   查看功能或模式名称。


urls.py文件中的我的代码-

urlpatterns = [
    url(r'^password-reset/',
        auth_views.PasswordResetView.as_view(
            template_name='accounts/password_reset.html'),
        name='password_reset'),

    url(r'^password-reset/done/',
        auth_views.PasswordResetDoneView.as_view(
            template_name='accounts/password_reset_done.html'),
        name='password_reset_done'),

    url(r'^password-reset-confirm/<uidb64>/<token>/',
        auth_views.PasswordResetConfirmView.as_view(
            template_name='accounts/password_reset_confirm.html'),
        name='password_reset_confirm'),
]

我还为“帐户”目录中的所有页面创建了单独的HTML文件。 顺便说一下,我正在youtube上观看本教程-click here

Url.py Code Screenshot

Error Screenshot

password_reset.html Screenshot

password_reset_done.html Screenshot

password_reset_confirm.html screenshot

Github:Click Here

2 个答案:

答案 0 :(得分:0)

.html的{​​{1}}看起来如何?

答案 1 :(得分:0)

问题是您已将这些视图和模板包含在名为accounts的单独django应用程序内。将视图分开并路由到单独的应用程序中时,all of the route names that you specified will be namespaced

  

URL命名空间使您可以唯一地反向命名URL模式,即使不同的应用程序使用相同的URL名称。第三方应用程序始终使用命名空间的URL是一个好习惯(就像我们在本教程中所做的那样)。同样,如果部署了一个应用程序的多个实例,它还允许您反向URL。换句话说,由于单个应用程序的多个实例将共享命名URL,因此名称空间提供了一种区分这些命名URL的方法。

默认情况下,分配给这些路由的名称空间将是您在accounts中设置的应用程序名称(例如urls.py)。这意味着您指定的视图的标准名称是accounts:password_reset_done,依此类推。因此,django找不到正在寻找的路由/视图(未命名空间的password_reset_done)。

您可以通过以下方法解决此问题:(1)将帐户登录/密码重置视图移至Dipesh_Pal应用程序并在Dipesh_Pal/urls.py中指定路由,或(2)显式设置{{1 }}包含在''中的accounts.urls中。