【问题标题】:Flask square brackets and single quotas at showing all validation message at onceFlask 方括号和单个配额一次显示所有验证消息
【发布时间】:2017-07-13 20:59:17
【问题描述】:

我用烧瓶创建了一个非常简单的登录表单

    email = StringField('E-Mail:',  validators=[validators.DataRequired(message='E-mail needed.'), validators.email(u'Provide e-mail.')])
    password = StringField('Password:', [validators.required(u'Password can't be empty.')])

以及将在模板内创建表单的宏:

{% macro render_field(field) %}
<fieldset>
    <div class="form-group">
      {{ field(**kwargs) | safe }}
    </div>
</fieldset>
{% endmacro %}

如您所见,这是一种非常简单的形式。在烧瓶教程中,它显示了各个字段的验证错误。但我只想在表单顶部一次显示它们。

这是我的模板:

<div class="panel-body">
                    {% if loginForm.errors %}
                    <div class="alert alert-danger">
                        <ul>
                            {% for error in loginForm.errors %}
                                <li>{{ loginForm.errors[error] }}</li>
                            {% endfor %}
                        </ul>
                    </div>
                    {% endif %}
                    <form role="form" method="post" action="{{ url_for('login') }}">
                        {% from "_formhelper.html" import render_field %}
                        <fieldset>
                            {{ render_field(loginForm.email, class="form-control", placeholder="E-Mail") }}
                            {{ render_field(loginForm.password, class="form-control", placeholder="Password") }}
                            <button  class="btn btn-lg btn-success btn-block">Login</button>
                        </fieldset>
                    </form>
                </div>

如您所见,我将错误部分放在表单的顶部。但当 我发布空表单,它显示如下错误消息:

['密码不能为空']代替密码不能为空

为什么它会附加方括号和单个配额,消息的开头和结尾?我不知道。

【问题讨论】:

  • 这是因为在更复杂的表格中可能会出现不止一个错误。 loginForm.errors[error] 返回一个列表。
  • @Dan 谢谢....

标签: python forms flask wtforms


【解决方案1】:

我知道这是一个老问题,但如果其他人有这个问题,你可以通过为消息添加一个 for 循环来解决它,如下所示:

{% with messages = get_flashed_messages() %}
      {% if messages %}
        {% for message in messages %}
        <div class="alert alert-warning my-5">
            {{ message }}
        </div>
        {% endfor %}
      {% endif %}
    {% endwith %}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 1970-01-01
    相关资源
    最近更新 更多