【问题标题】:Render field errors in for loop with Flask-WTF使用 Flask-WTF 在 for 循环中渲染字段错误
【发布时间】:2015-03-16 16:14:57
【问题描述】:

我想遍历模板中的表单字段并显示带有如下错误的字段:

 {{ form.hidden_tag() }}
    {% for field in form if field.widget.input_type != 'hidden' %}
    {%  if form.errors.field %}
  <div class="has-error">  {{ field.label }}  {{ field(size=80, class_='form-control') }}</div>
    <span style="color: red;">{{ form.errors.field.0 }}</span>
    {% else %}
        {{ field.label }}  {{ field(size=80, class_='form-control') }}
        {% endif %}
    {% endfor %}

但这由于某种原因不起作用 - 表单呈现但不显示错误。

我已经检查了hereand hereand also here 的解决方案,但没有一个有帮助。

有人可以建议如何修复我的表单以正确呈现错误吗?

【问题讨论】:

    标签: python validation flask wtforms flask-wtforms


    【解决方案1】:

    问题在于使用form.errors.field。如果您有一个名为 field 的字段而不是任何其他名称,这在 jinja 中才是准确的。

    幸运的是,您已经在迭代字段,并且每个字段都有一个 .errors 属性,因此最短的解决方案是简单地使用该属性

    您的代码应该类似于:

     {{ form.hidden_tag() }}
     {% for field in form if field.widget.input_type != 'hidden' %}
       {% if field.errors %}
         <div class="has-error">  {{ field.label }}  {{ field(size=80, class_='form-control') }}</div>
         <span style="color: red;">{% for error in field.errors %}{{ error }}{% if not loop.last %}<br />{% endif %}{% endfor %}</span>
       {% else %}
          {{ field.label }}  {{ field(size=80, class_='form-control') }}
       {% endif %}
     {% endfor %}
    

    【讨论】:

      猜你喜欢
      • 2020-11-14
      • 2021-12-20
      • 2019-10-24
      • 1970-01-01
      • 2014-07-10
      • 2017-12-30
      • 1970-01-01
      • 1970-01-01
      • 2018-01-16
      相关资源
      最近更新 更多