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

问题描述 投票:0回答:1

我想使用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"),
python html django
1个回答
2
投票

如果您阅读有关PasswordResetConfirmView的文档,您可以看到:

来自URL的关键字参数:

  • uidb64:用户ID以base 64编码。
  • token:用于检查密码是否有效的令牌。

这意味着您需要更改您的URL

path('password_change/', auth_views.PasswordResetConfirmView ...

与此类似的东西

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

您必须弄清楚适合您的确切格式,但这应该指向正确的方向。

© www.soinside.com 2019 - 2024. All rights reserved.