我想使用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"),
答案 0 :(得分:2)
如果您阅读有关PasswordResetConfirmView
的文档,则会看到:
URL中的关键字参数:
uidb64 :用户的ID以base 64编码。
令牌:用于检查密码是否有效的令牌。
因此,这意味着您需要从
更改URL。path('password_change/', auth_views.PasswordResetConfirmView ...
类似于此
path('password_change/<uidb64>/<token>/', auth_views.PasswordResetConfirmView ...
您将必须找出适合您的确切格式,但这应该为您指明正确的方向。