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 种模式