Виджет Django настраивает 'render_field' не работает
У меня есть этот шаблон рендеринга формы в Django, и render_field
не работает внутри if-else
:
{% load widget_tweaks %}
{% 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 %}
{% else %}
{% render_field field class="form-control is-valid" %}
{% endif %}
{% else %}
{% render_field field class="form-control" %}
{% endif %}
{% if field.help_text %}
<small class="form-text text-muted">
{{ field.help_text }}
</small>
{% endif %}
</div>
{% endfor %}
И это делает это:
Но когда я пробую уменьшенную версию вышеприведенного кода, например, следующую, тогда она все равно не работает:
{% load widget_tweaks %}
{% for field in form %}
<div class="form-group">
{% if field.errors %}
{% render_field field class="form-control is-invalid" %}
{% else %}
{% render_field field class="form-control is-valid" %}
{% endif %}
{% if field.help_text %}
<small class="form-text text-muted">
{{ field.help_text }}
</small>
{% endif %}
</div>
{% endfor %}
И оказывает это:
Но когда я удаляю все if-else
"S:
{% load widget_tweaks %}
{% for field in form %}
<div class="form-group">
{{ field.label_tag }}
{% render_field field class="form-control" %}
{% if field.help_text %}
<small class="form-text text-muted">
{{ field.help_text }}
</small>
{% endif %}
</div>
{% endfor %}
Тогда он правильно отображает:
Но мне нужно if-else
's для проверки ошибок формы и добавления сообщений об ошибках в форму соответственно, оценят любую помощь. Так почему же render_field
не работает с if-else
? Как решить это? Любые другие способы использования widget_tweaks
сделать ошибку или любую альтернативу widget_tweaks
?
1 ответ
Ты можешь использовать WIDGET_ERROR_CLASS
установить класс ошибки.
{% with WIDGET_ERROR_CLASS='my_error_class' %}
{% render_field form.field1 %}
{% render_field form.field2 %}
{% render_field form.field3 %}
{% endwith %}
И тогда вы можете добавить ошибки формы:
{% if field.errors %}
{% for error in field.errors %}
<div class="invalid-feedback">
{{error}}
</div>
{% endfor %}
{% endif %}