Я пытаюсь реализовать функцию смены пароля в моем веб-приложении Django 2.1.7. Даже когда я использую запрос GET
для страницы смены пароля, эти две ошибки присутствуют в шаблоне:
Два поля пароля не совпадают.
Ваш старый пароль был введен неправильно. Пожалуйста, введите его снова.
Кроме того, когда я POST
данных с формой, form.is_valid()
всегда возвращает ложь, хотя я могу подтвердить, что сообщения об ошибках (те же, что перечислены выше) являются ложными.
Страница формы не выдает сообщений об ошибках, если я не вставлю их вручную.
Я пробовал решение здесь и много подобных. Насколько я могу судить, моя логика такая же.
View
def change_password(request):
args = {}
if request.method == "POST":
form = PasswordChangeForm(data=request.POST, user=request.user)
if form.is_valid():
form.save()
# Keep the user logged in after they change their password.
update_session_auth_hash(request, form.user)
return redirect("manager:profile")
else:
print("INVALID PASSWORD")
print(form.error_messages)
else:
form = PasswordChangeForm(request.user)
args["form"] = form
return render(request, "manager/change_password.html", args)
Template
<head>
{% extends 'manager/base.html' %}
{% block title %}
Change Password: {{ user.username }}
{% endblock %}
</head>
{% block body %}
{% if form.error_messages %}
{% for error, error_message in form.error_messages.items %}
<b>{{ error_message }}</b><br>
{% endfor %}
{% endif %}
<form method="POST">
{% csrf_token %}
{{ form.as_p }}
<br>
<button class="btn grey darken-3" type="submit">Save Changes</button>
</form>
{% endblock %}
Как я могу:
1. Получить функцию смены пароля для правильной проверки?
2. Покажите ТОЛЬКО действительные сообщения об ошибках, полученных в результате POST
?