成功表单提交时不清除电子邮件字段

时间:2016-02-09 14:07:06

标签: python flask flask-wtforms

我在Flask WTF中的表格有两个字段:姓名和电子邮件。当我成功提交表单时,名称字段将重置,而电子邮件字段将保留其值。到目前为止,浏览器的行为是相同的(我已经在Chrome和Firefox上试过了)。以下是我的意思的屏幕截图:

enter image description here

enter image description here

enter image description here

以下是相关的代码段:

class NameForm(Form):
    name = StringField('What is your name?', validators=[Required()])
    email = StringField('What is your email?', validators=[Required(), Email()])
    submit = SubmitField('Submit')
@app.route('/', methods=['GET', 'POST'])
def index():
    form = NameForm()
    if form.validate_on_submit():
        name = form.name.data
    return render_template('index.html', form=form, name=name)
{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}

{% block title %}Flasky{% endblock %}

{% block page_content %}
<div class="page-header">
    <h1>Hello, {% if name %}{{ name }}{% else %}Stranger{% endif %}!</h1>
</div>
{{ wtf.quick_form(form) }}
{% endblock %}

知道造成这种行为的原因是什么?

1 个答案:

答案 0 :(得分:1)

表单永远不会被清除,因为无论如何将表单传递回模板。由于响应是发布请求的一部分,浏览器还会在内部记住表单的状态(您确定要#34;您确定要重新提交吗?&#34;如果刷新则会显示消息)。

常见模式是在发布表单后重定向,以清除呈现状态和任何已保存的有关提交表单的浏览器状态。您通常需要在发布后从表单中存储状态,因此您将使用数据库,或者只是将其存储在此示例的会话中。

static mapping = {
     id name: 'country'
}