Когда я впервые построил свое приложение с Django 1.8, я смог создать пользовательские сообщения об ошибках формы, такие как:
# forms.py
class UserProfileForm(forms.ModelForm):
user_age = forms.IntegerField(
label = 'Your age',
error_messages = {'required': 'Please enter your age},
widget = forms.NumberInput(attrs={'class': 'form-control'}))
# create_user_profile.html
<form method="post" action=".">
{% csrf_token %}
<div class="form-group form-errors">
{% if form.errors %}
<p class="errornote">
{% if form.errors.items|length == 1 %}
Please correct the error below.
{% else %}
Please correct the errors below.
{% endif %}
</p>
{% endif %}
</div>
<div class="form-group form-errors">
{% if form.non_field_errors %}
{% for error in form.non_field_errors %}
<p class="errornote">
{{ error }}
</p>
{% endfor %}
{% endif %}
</div>
<div class="form-group">
<label for="id_user_age">Your age</label>
{{ form.user_age.errors }}
{{ form.user_age }}
</div>
Если пользователь не заполнил свое поле формы 'user_age', на странице шаблона будет отображаться сообщение об ошибке в верхней части страницы и сообщение об ошибке для этого поля формы, например:
Please correct the error below.
Your age
Please enter your age
+--------------------+
| |
+--------------------+
Однако я недавно обновил Django 1.8 до Django 1.11 и понял, что мои сообщения об ошибках в пользовательской форме больше не отображаются. Вместо этого, если пользователь не вводит свой возраст в это поле формы в Django 1.11, вместо него отображается общее сообщение «пузырь», которое содержит восклицательный знак:
Your age
+--------------------+
| |
+--------------------+
! Please fill out this field
Это происходит во всех моих настольных браузерах, Safari, Firefox, Chrome, Brave и т. Д.
Я не помню, чтобы читал об этом изменении в примечаниях к выпуску, когда переходил с Django 1.8 на 1.11 (хотя, возможно, я его пропустил). Что здесь происходит? Как мне заставить Django 1.11 отображать мои сообщения об ошибках в пользовательских полях формы, как это было в Django 1.8.