我几乎已经实现了密码重置过程,但是当我确认密码更改时,我并没有得到重置完成模板的提示,而得到的模板显示:
密码重置链接无效...
但是,已经进行了密码更改,可以使用新密码登录。重定向似乎是错误的,但我不知道为什么。
这是我的urls.py:
path('reset/<uidb64>/<token>', auth_views.PasswordResetConfirmView.as_view(
template_name='news/user/password_reset_confirm.html',
success_url='../password-change/done'), name='password_reset_confirm'),
path('password-change/done', auth_views.PasswordResetCompleteView.as_view(template_name='news/user/password_reset_complete.html'), name='password_change_done'),
这是我的模板:
{% block content %}
{% if validlink %}
<p>Please enter your new password twice so we can verify you typed it in correctly.</p>
<form method="post">{% csrf_token %}
<fieldset class="module aligned">
<div class="form-row field-password1">
{{ form.new_password1.errors }}
<label for="id_new_password1">New password:</label>
{{ form.new_password1 }}
</div>
<div class="form-row field-password2">
{{ form.new_password2.errors }}
<label for="id_new_password2">Confirm password:</label>
{{ form.new_password2 }}
</div>
<input type="submit" value="Change my password">
</fieldset>
</form>
{% else %}
<p>The password reset link was invalid, possibly because it has already been used. Please request a new password reset.</p>
{% endif %}
{% endblock %}
password_reset_confirm
路径上缺少最后一个斜杠,这导致POST到达错误的位置。应该是:path('reset/<uidb64>/<token>/', ...
请注意,您的success_url
也可能是错误的,我怀疑..
是否会按您认为的方式工作。