快读入门

急于上手?本页对 Flask-WTF 给出了一个详尽的介绍。假设你已经安装了 Flask-WTF,如果还未安装的话,请先浏览 安装

创建表单

Flask-WTF 提供了对 WTForms 的集成。例如:

  1. from flask_wtf import Form
  2. from wtforms import StringField
  3. from wtforms.validators import DataRequired
  4. class MyForm(Form):
  5. name = StringField('name', validators=[DataRequired()])

Note

从 0.9.0 版本开始,Flask-WTF 将不会从 wtforms 中导入任何的内容,用户必须自己从 wtforms 中导入字段。

另外,隐藏的 CSRF 令牌会被自动地创建。你可以在模板这样地渲染它:

  1. <form method="POST" action="/">
  2. {{ form.csrf_token }}
  3. {{ form.name.label }} {{ form.name(size=20) }}
  4. <input type="submit" value="Go">
  5. </form>

尽管如此,为了创建有效的 XHTML/HTML, Form 类有一个 hidden_tag 方法, 它在一个隐藏的 DIV 标签中渲染任何隐藏的字段,包括 CSRF 字段:

  1. <form method="POST" action="/">
  2. {{ form.hidden_tag() }}
  3. {{ form.name.label }} {{ form.name(size=20) }}
  4. <input type="submit" value="Go">
  5. </form>

验证表单

在你的视图处理程序中验证请求:

  1. @app.route('/submit', methods=('GET', 'POST'))
  2. def submit():
  3. form = MyForm()
  4. if form.validate_on_submit():
  5. return redirect('/success')
  6. return render_template('submit.html', form=form)

注意你不需要把 request.form 传给 Flask-WTF;Flask-WTF 会自动加载。便捷的方法 validate_on_submit 将会检查是否是一个 POST 请求并且请求是否有效。

阅读 创建表单 学习更多的关于表单的技巧。