Я следую слегка устаревшему уроку по django, но это материал хорошего качества, поэтому я придерживаюсь его.
В этом сегменте управления формой поля не отображаются при наличии ошибки, не связанной с полем.
ссылка на учебник, по которому я следую: https://simpleisbetterthancomplex.com/series/2017/09/25/a-complete-beginners-guide-to-django-part-4.html
{% load widget_tweaks %}
{% if form.non_field_errors %}
<div class="alert alert-danger" role="alert">
{% for error in form.non_field_errors %}
<p{% if forloop.last %} class="mb-0"{% endif %}>{{ error }}</p>
{% endfor %}
</div>
{% endif %}
{% for field in form %}
<div class="form-group">
{{ field.label_tag }}
{% if form.is_bound %}
{% if field.errors %}
{% render_field field class="form-control is-invalid" %}
{% for error in field.errors %}
<div class="invalid-feedback">
{{ error }}
</div>
{% endfor %}
{% endif %}
{% else %}
{% render_field field class="form-control is-valid" %}
{% endif %}
{% if field.help_text %}
<small class="form-text text-muted">
{{ field.help_text|safe }}
</small>
{% endif %}
</div>
{% endfor %}
Ожидаемое:
При вводе неверного пользователя / пароля появляется сообщение об ошибке, и все поля отображаются под
Фактический:
При вводе недопустимого пользователя / pass выдается сообщение об ошибке, НО все поля не отображаются.
EDIT:
Я не уверен, пропустил ли я это в уроке или он пропустил его, но я решил проблему, добавив оператор else в поле if field.errors:
{% else %}
{% render_field field class="form-control" %}