我在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
时:
{% 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
来检查表单错误并相应地添加错误消息,我们将不胜感激。 那么为什么render_field
无法使用if-else
?怎么解决这个?使用widget_tweaks
呈现错误的任何其他方式或widget_tweaks
的任何替代方法?
答案 0 :(得分:0)
您可以使用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 %}