Django密码重置自定义模板不起作用

时间:2019-03-01 16:25:56

标签: python html django

我想使用Django内置的PasswordChangeView让用户重设密码。我的PasswordResetView和我的PasswordResetDoneView在工作。

Django总是给我错误:

NoReverseMatch at /reset
Reverse for 'password_reset_confirm' with keyword arguments
  '{'uidb64': 'MTM', 'token': '549-1f211ad25c6d91e420a4'}' not found.
  1 pattern(s) tried: ['password_change/$']

我已经尝试添加:

path(
    'password_change/',
    auth_views.PasswordResetConfirmView,
    {"template_name": "authenticate/reset/password_change.html"},
    name="password_reset_confirm"),

但这并没有改变任何东西。

我的网址模式:

path(
    'reset',
    auth_views.PasswordResetView.as_view(
        template_name='authenticate/password/reset/reset.html'),
    {
        'template_name': 'email/test.html',
        'html_email_template_name': 'email/test.html',
        'email_template_name': 'email/test.txt',
        'subject_template_name': 'email/test.txt',
    },
    name='password_reset'),
path(
    'reset/done',
    auth_views.PasswordResetDoneView.as_view(
        template_name='authenticate/password/reset/done.html'),
    name='password_reset_done'),
path(
    'password_change/',
    auth_views.PasswordResetConfirmView,
    {"template_name": "authenticate/password/reset/confirm.html"},
    name="password_reset_confirm"),
path(
    'password_change/',
    auth_views.PasswordResetCompleteView,
    {"template_name": "authenticate/password/reset/complete.html"},
    name="password_reset_complete"),

1 个答案:

答案 0 :(得分:2)

如果您阅读有关PasswordResetConfirmView的文档,则会看到:

  

URL中的关键字参数:

     
      
  • uidb64 :用户的ID以base 64编码。

  •   
  • 令牌:用于检查密码是否有效的令牌。

  •   

因此,这意味着您需要从

更改URL。
path('password_change/', auth_views.PasswordResetConfirmView ...

类似于此

path('password_change/<uidb64>/<token>/', auth_views.PasswordResetConfirmView ...

您将必须找出适合您的确切格式,但这应该为您指明正确的方向。

相关问题