【问题标题】:Django password_reset with appnameDjango password_reset 与 appname
【发布时间】:2021-02-03 15:23:18
【问题描述】:

我正在使用身份验证视图在 django 中重置密码。由于我已经在我的用户应用程序中声明了这个视图并使用了 URL 的 appname,所以我收到了一个错误。我知道我应该更改 django 预建模板中的 URL,但我不知道覆盖此类内容的最佳方法。


这是我的用户应用程序的 URL.py:

app_name = 'users'

urlpatterns = [
    path('register/', views.register, name='register'),
    path('login/', auth_views.LoginView.as_view(template_name='users/login.html'), name='login'),
    path('logout/', auth_views.LogoutView.as_view(template_name='users/logout.html'), name='logout'),
    path('password-reset/',
         auth_views.PasswordResetView.as_view(
             template_name='users/password_reset.html'
         ),
         name='password_reset'),
    path('password-reset/done/',
         auth_views.PasswordResetDoneView.as_view(
             template_name='users/password_reset_done.html'
         ),
         name='password_reset_done'),
    path('password-reset-confirm/<uidb64>/<token>/',
         auth_views.PasswordResetConfirmView.as_view(
             template_name='users/password_reset_confirm.html'
         ),
         name='password_reset_confirm'),
    path('password-reset-complete/',
         auth_views.PasswordResetCompleteView.as_view(
             template_name='users/password_reset_complete.html'
         ),
         name='password_reset_complete'),]

这是错误:

NoReverseMatch at /users/password-reset/
Reverse for 'password_reset_confirm' not found. 'password_reset_confirm' is not a valid view function or pattern name.

这是它所指的行:

{{ 协议 }}://{{ 域 }}{% url 'password_reset_confirm' uidb64=uid token=token %}

【问题讨论】:

  • 参考这个stackoverflow.com/questions/52782462/… 有帮助吗?
  • 第一部分没有帮助,但可能第二部分会解决它,但是,我想避免该解决方案并以另一种方式修复它。

标签: python django


【解决方案1】:

也许您需要添加模块名称才能访问它,如下所示:

{% url 'users:password_reset_confirm' %}

https://docs.djangoproject.com/en/3.1/topics/http/urls/#reversing-namespaced-urls

【讨论】:

  • 这可能是解决方案,但我认为更改它的方法是从 django 的基本文件中更改文件,我不知道是否推荐它
  • 我相信这还没有固定的推荐方式。因此,很难在 django 默认模块上附加新的 url,在这种情况下可能是不必要的。我看到了两种很好的方法: - 您可以在主 urls.py 中添加此视图,并且您不需要引用任何模块。 - 如果您创建了自定义用户,请一起制作此视图,我总是看到人们使用这种方式。
猜你喜欢
  • 2016-05-28
  • 2011-08-07
  • 1970-01-01
  • 2015-01-23
  • 1970-01-01
  • 2019-03-27
  • 1970-01-01
  • 1970-01-01
  • 2018-09-25
相关资源
最近更新 更多