返回

Flask Web 极简教程(四)- Flask WTF Forms(Part A)**

后端

在 Flask Web 开发中,表单是用户与应用程序交互的一种重要方式。Flask-WTF 是一个 Flask 扩展,它提供了对表单验证和处理的简单而强大的支持。

本文将指导你如何使用 Flask-WTF 来创建和验证表单。

介绍 Flask-WTF

Flask-WTF 是一个 Flask 扩展,它提供了对表单验证和处理的简单而强大的支持。它基于 WTForms,一个独立的 Python 表单验证库。

Flask-WTF 提供了以下功能:

  • 内置的表单验证器
  • 定制验证规则
  • CSRF 保护
  • 数据绑定

安装 Flask-WTF

要安装 Flask-WTF,请使用 pip:

pip install Flask-WTF

创建表单

要使用 Flask-WTF 创建表单,你需要创建一个类并继承自 FlaskForm 类。这个类将定义表单字段和验证规则。

from flask_wtf import FlaskForm
from wtforms import StringField, SubmitField
from wtforms.validators import DataRequired

class MyForm(FlaskForm):
    name = StringField('姓名', validators=[DataRequired()])
    submit = SubmitField('提交')

在这个例子中,MyForm 类定义了一个名为 name 的文本字段和一个名为 submit 的提交按钮。DataRequired 验证器确保在提交表单之前必须填写 name 字段。

验证表单

在处理表单之前,你需要验证它。这可以通过调用 validate_on_submit() 方法来完成:

@app.route('/', methods=['GET', 'POST'])
def index():
    form = MyForm()
    if form.validate_on_submit():
        # 表单已验证
        ...
    return render_template('index.html', form=form)

如果表单验证失败,Flask-WTF 将自动显示验证错误。

数据绑定

Flask-WTF 提供了数据绑定功能,它允许你将表单数据绑定到 Python 对象。这可以通过调用 form.populate_obj() 方法来完成:

@app.route('/', methods=['GET', 'POST'])
def index():
    form = MyForm()
    if form.validate_on_submit():
        user = User()
        form.populate_obj(user)
        db.session.add(user)
        db.session.commit()
    return render_template('index.html', form=form)

在这个例子中,表单数据被绑定到 User 对象,然后将其添加到数据库中。

CSRF 保护

CSRF(跨站请求伪造)是一种攻击,攻击者可以利用它来诱骗用户在不知情的情况下提交表单。Flask-WTF 提供了内置的 CSRF 保护,它可以防止这种类型的攻击。

要启用 CSRF 保护,你需要在 Flask 配置中设置 SECRET_KEY

app.config['SECRET_KEY'] = 'your-secret-key'

总结

Flask-WTF 是一个强大的 Flask 扩展,它提供了对表单验证和处理的简单而强大的支持。它使你能够轻松创建和验证表单,并利用数据绑定和 CSRF 保护等高级功能。

**