我创建了一个非常简单的带烧瓶的登录表单
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>
如您所见,我将错误部分放在表单的顶部。但当 我发布空表单,它会显示如下错误消息:
['密码不能为空']而不是密码不能为空
为什么它会附加方括号和单个配额,邮件的开头和结尾?我不知道。
答案 0 :(得分:0)
我知道这是一个老问题,但是如果其他人有此问题,则可以通过为消息添加for循环来解决它,如下所示:
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
<div class="alert alert-warning my-5">
{{ message }}
</div>
{% endfor %}
{% endif %}
{% endwith %}