Почему поля не отображаются при наличии ошибок, не связанных с полями? - PullRequest
0 голосов
/ 20 июня 2019

Я следую слегка устаревшему уроку по 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" %}
...