django密码更改完成失败

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

我几乎已经实现了密码重置过程,但是当我确认密码更改时,我并没有得到重置完成模板的提示,而得到的模板显示:

密码重置链接无效...

但是,已经进行了密码更改,可以使用新密码登录。重定向似乎是错误的,但我不知道为什么。

这是我的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 %}
django authentication change-password
1个回答
1
投票
您在password_reset_confirm路径上缺少最后一个斜杠,这导致POST到达错误的位置。应该是:

path('reset/<uidb64>/<token>/', ...

请注意,您的success_url也可能是错误的,我怀疑..是否会按您认为的方式工作。
© www.soinside.com 2019 - 2024. All rights reserved.