Django 密码重置与应用程序名称

我正在使用 auth 视图来重置 django 中的密码。由于我已在用户应用程序中声明此视图并使用 appname 作为 URL,因此出现错误。我知道我应该更改 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 %}


慕婉清6462132
浏览 277回答 2
2回答

jeck猫

也许您需要添加模块名称才能访问它,如下所示:{%&nbsp;url&nbsp;'users:password_reset_confirm'&nbsp;%}https://docs.djangoproject.com/en/3.1/topics/http/urls/#reversing-namespaced-urls

HUX布斯

我花了一整天的时间才弄清楚:我尽了一切努力来弄清楚这一点,但最终找到了答案不要将密码重置、密码重置完成、密码重置确认和密码重置完成写在同一个 app_name url_pattern 中在根项目名称 url_pattern 中写入这些内容的正确方法
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python