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

Posted

技术标签:

【中文标题】NoReverseMatch at /accounts/password-reset/ 用于 Django 中的密码重置【英文标题】:NoReverseMatch at /accounts/password-reset/ for Password Reset in Django 【发布时间】:2019-05-28 13:44:01 【问题描述】:

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

NoReverseMatch at /accounts/password-reset/ 未找到“password_reset_done”的反向。 '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

【问题讨论】:

【参考方案1】:

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

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

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

您可以通过 (1) 将您的帐户登录/密码重置视图移动到 Dipesh_Pal 应用程序并在 Dipesh_Pal/urls.py 中指定路由,或 (2) 在包含 @ 时显式设置 '' 的命名空间来解决此问题987654330@ 在Dipesh_Pal/urls.py

【讨论】:

请您解释一下方法(2)。如何“在 Dipesh_Pal/urls.py 中包含accounts.urls时显式设置''的命名空间”? 参考文档提供了几个显式设置命名空间的示例。如果您在阅读后仍需要帮助,请告诉我。【参考方案2】:

url(r'^password-reset/done/',...).html 是什么样子的?

【讨论】:

查看我的帖子(问题),我用我的所有截图更新它。谢谢

以上是关于NoReverseMatch at /accounts/password-reset/ 用于 Django 中的密码重置的主要内容,如果未能解决你的问题,请参考以下文章

NoReverseMatch at ...... in django

NoReverseMatch at / posts / post / 18 / comment / Django Error

Django NoReverseMatch at / 路径名和/或顺序是不是冲突?

NoReverseMatch at / Reverse for 'post_detail' 未找到

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

NoReverseMatch at / Reverse for 'singlepropa' 与参数 '('mens-shirt-1',)' 未找到。已尝试 1 种模式