Итак, ваша проблема здесь:
{{ form.email.label(class="form-control", type="email") }}
{% if form.email.errors %}
{{ form.email(class="form-control form-control-lg is-invalid") }}
<div class="invalid-feedback">
{% for error in form.email.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% endif %}
Хотя в вашем простом фрагменте HTML у вас нет метки, в версии Jinja у вас есть метки и вы помещаете input
в if form.email.errors
, эффективно отображая ввод только тогда, когда в вашей форме есть ошибка.
Это просто метка формы, а не ввод:
{{ form.email.label(class="form-control", type="email") }}
Это ваш фактический ввод
{{ form.email(class="form-control form-control-lg is-invalid") }}
Ваш правильный код, скорее, должен быть:
{{ form.email(class="form-control form-control-lg") }}
{% if form.email.errors %}
<div class="invalid-feedback">
{% for error in form.email.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% endif %}
Пожалуйста, обратите внимание , что я удалил этикетку , поскольку у вас его нет в дизайне, который вы показали в качестве примера, у вас есть заполнитель, а не метка.
При этом вы пропустите класс is-invalid
в поле. Я бы сказал, что это должно работать:
{{ form.email(class="form-control form-control-lg" ~ (" is-invalid" if form.email.errors else "")) }}
{% if form.email.errors %}
<div class="invalid-feedback">
{% for error in form.email.errors %}
<span>{{ error }}</span>
{% endfor %}
</div>
{% endif %}