Я форма PasswordChangeForm для смены пароля. Я пытаюсь отобразить сообщение об ошибке, если указанный пароль меньше 8 или больше 64 (в приведенном ниже коде «form.data ['new_password1']»). Поэтому, когда я ввожу пароль длиной менее 8 символов, я вижу сообщение об ошибке «Новый пароль должен содержать не менее 8 символов и не более 64 символов». Но сообщение об ошибке не отображается на странице интерфейса. Это связано с тем, что "return render (request, 'registration / change_password. html'" отображается снова.
Не могли бы вы помочь мне, как мы можем отобразить сообщение об ошибке в PasswordChangeForm.
@login_required(login_url='/login/')
def change_password_view(request):
global passwordValidationFailed
passwordValidationFailed = False
if (request.method == 'POST'):
form = PasswordChangeForm(request.user, request.POST)
if len(form.data['new_password1']) >= 8 and len(form.data['new_password1']) <= 64:
if form.is_valid():
form.save()
messages.success(request, 'Your password was successfully updated!')
profile = request.user.get_profile()
profile.force_password_change = False
profile.save()
return render(request, 'dau_gui_app/status_view.html', {'title': "System Status"})
else:
passwordValidationFailed = False
messages.error(request, 'Please correct the error below.')
else:
raise form.ValidationError("New password should have minimum 8 characters and maximum 64 characters")
else:
form = PasswordChangeForm(request.user)
return render(request, 'registration/change_password.html', {
'form': form
})
Вот мой пароль изменения. html
{% load i18n %}
{% load admin_static %}{% load firstof from future %}<!DOCTYPE html>
<html lang="{{ LANGUAGE_CODE|default:"en-us" }}" {% if LANGUAGE_BIDI %}dir="rtl"{% endif %}>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<link rel="stylesheet" href="static/dau_gui_app/fontawesome-free-5.3.1-web/css/all.min.css">
<link rel='shortcut icon' type='image/x-icon' href='/static/dau_gui_app/images/favicon.ico' />
<link rel="stylesheet" href="/static/dau_gui_app/style.css">
<link rel="stylesheet" href="/static/dau_gui_app/bootstrap.min.css">
<link rel="stylesheet" href="/static/dau_gui_app/w3.css">
<link rel="stylesheet" href="/static/dau_gui_app/dataTables/datatables.css">
<script type="text/javascript" src="/static/dau_gui_app/dataTables/jQuery-3.3.1/jquery-3.3.1.js"></script>
<script type="text/javascript" src="/static/dau_gui_app/dataTables/datatables.js"></script>
<link rel="stylesheet" type="text/css" href="{% block stylesheet %}{% static 'admin/css/base.css' %}{% endblock %}" />
{% block extrastyle %}{% endblock %}
<title>
{% block title %}Change Password{% endblock %}
</title>
</head>
{% load i18n %}
<body id="login_page">
<DIV style="margin-left:auto;margin-right:auto;padding-top:100px;display:block;width:30%">
<DIV id="login_box">
<table id="logon_box_table" >
<!-- Title Bar -->
<TR >
<TD colspan='2' >
<DIV id='login_box_title'>
Update Password
</DIV>
</TD>
</TR>
<!-- Password -->
<TR >
<TD >
<div id= "logon-container" >
<img src="/static/dau_gui_app/images/logo.png" alt="">
<div id="alstom-logo-container"> <img src="/static/dau_gui_app/images/alstom_logo.png" alt="" style="width: 90px; height: 18px;"> </div>
<div id="version-container" >Software Version: 4.0</div>
</div>
</TD>
<TD style="width: 490px; height: 18px;">
{% block content %}
<form method="post">
{% csrf_token %}
{{ form }}
</TD>
</TR>
<TR >
<TR >
<TD colspan='2' style="text-align:center;padding:10px">
<button type="submit">Update Password</button>
</form>
{% endblock %}
</TD>
</TR>
</TABLE>
</DIV>
</DIV>
</body>
</html>