Сбой при смене пароля в django - PullRequest
0 голосов
/ 07 октября 2019

Я почти реализовал процесс сброса пароля, но когда я проверяю смену пароля, я не оказываюсь в шаблоне полного сброса и получаю шаблон:

Ссылка для сброса пароля быланеверно ...

Однако, изменение пароля было выполнено, и вы можете войти под новым паролем. Кажется, перенаправление неверно, но я не могу понять, почему.

Вот мой 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 %}

1 Ответ

1 голос
/ 07 октября 2019

Вы пропустили последний слеш на пути password_reset_confirm, из-за которого ваш POST переместился не туда. Это должно быть:

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

Обратите внимание, что ваш success_url также, вероятно, неверен, я сомневаюсь, что .. будет работать так, как вы думаете.

...