Flask Web 极简教程(四)- Flask WTF Forms(Part A)**
2024-01-30 07:16:17
在 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 保护等高级功能。
**