Flask-WTF 是一个 Flask 扩展,它集成了 WTForms 库,让我们在 Flask 应用中创建和验证表单变得更加简单。它提供了一种结构化的方式来构建表单、处理验证逻辑以及在 HTML 中进行渲染。在本文中,我们将通过构建一个注册表单来深入探讨 Flask-WTF 的工作原理。在开始编写代码之前,让我们先了解一下它的核心功能、字段类型以及必要的准备工作。
Flask-WTF 的一些主要特性包括:
- 安全的表单处理 – 自动管理 CSRF 保护,有效防止未经授权的提交。
- 轻松的表单渲染 – 支持多种字段类型,如文本字段、复选框和下拉菜单,以便与 HTML 无缝集成。
- 内置验证功能 – 包括必填字段、长度限制、模式匹配以及支持自定义验证逻辑。
- 文件上传支持 – 允许用户通过表单无缝上传文件。
> 前置知识 – Python, HTML, CSS, Javascript
安装
要使用 Flask-WTF,我们首先需要使用 pip 来安装它,并将其导入到我们的应用程序中。
pip install flask-WTF
在 Flask-WTF 中,表单被定义为继承自 FlaskForm 类的类。字段被声明为类变量,这使得表单的创建过程既简单又结构化。
常用的 WTForms 字段类型:
- StringField(字符串字段): 用于输入字符串数据的文本字段。
- PasswordField(密码字段): 用于输入密码值的输入字段。
- BooleanField(布尔字段): 用于 True/False 选择的复选框。
- DecimalField(小数字段): 用于输入小数值的字段。
- RadioField(单选字段): 用于单选的一组单选按钮。
- SelectField(选择字段): 用于单选的下拉列表。
- TextAreaField(文本区域字段): 多行文本输入字段。
- FileField(文件字段): 文件上传字段。
Flask – WTF 示例
示例 1
使用上述字段类型构建一个示例表单
Python
CODEBLOCK_2322efd8
HTML
CODEBLOCK_7c0a0d80
代码解析:
- 创建了一个表单类: MyForm 继承自 FlaskForm,并包含了各种字段,如 StringField、PasswordField、BooleanField 等,同时还配置了相应的