【发布时间】:2018-06-27 22:37:54
【问题描述】:
我在 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 的任何替代方式?
【问题讨论】:
标签: python django django-forms jinja2 django-widget-tweaks