【发布时间】: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