Flask-WTF:Flask 表单处理的得力工具

Flask-WTF:Flask 表单处理的得力工具

Flask 生态中一款老牌表单扩展 Flask-WTF,目前在 GitHub 收获了 1,507 个 Star:

正文顶部截图

README区域截图

Flask-WTF 是 Pallets 生态下的一个扩展,用于将 WTForms 集成到 Flask 应用中。它简化了表单定义、验证和渲染的流程,同时内置了 CSRF 保护、文件上传和 reCAPTCHA 等功能。

WTForms 本身是一个灵活的表单验证和渲染库,Flask-WTF 在此基础上做了与 Flask 框架的适配工作,让开发者可以在 Flask 项目中更便捷地使用表单功能。

核心功能

Flask-WTF 主要提供以下能力:

  • CSRF 保护:内置跨站请求伪造防护,通过生成和校验 token 来保障表单提交安全
  • 文件上传:集成 WTForms 的 FileField,处理文件上传和验证
  • reCAPTCHA:支持 Google reCAPTCHA 的集成和验证
  • 表单验证:继承 WTForms 完整的字段验证体系,包括必填、长度、邮箱格式等规则

安装使用

安装很简单,直接通过 pip:

pip install Flask-WTF

Flask-WTF 依赖 WTForms 和 Flask,安装时会自动处理依赖关系。

基本用法

在 Flask 应用中定义一个表单类:

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

class MyForm(FlaskForm):
    name = StringField('Name', validators=[DataRequired()])
    submit = SubmitField('Submit')

在路由中处理表单:

from flask import Flask, render_template
from forms import MyForm

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key'

@app.route('/', methods=['GET', 'POST'])
def index():
    form = MyForm()
    if form.validate_on_submit():
        # 处理提交的数据
        return f'Hello, {form.name.data}!'
    return render_template('index.html', form=form)

模板中渲染表单:

<form method="POST">
    {{ form.hidden_tag() }}
    {{ form.name.label }} {{ form.name() }}
    {{ form.submit() }}
</form>

hidden_tag() 方法会自动渲染 CSRF token 字段,这是安全防护的关键部分。

文件上传示例

Flask-WTF 处理文件上传同样直接:

from flask_wtf import FlaskForm
from flask_wtf.file import FileField, FileAllowed

class UploadForm(FlaskForm):
    photo = FileField('Image', validators=[
        FileAllowed(['jpg', 'png'], 'Images only!')
    ])
    submit = SubmitField('Upload')

项目背景

Flask-WTF 属于 Pallets-Eco 组织维护的扩展之一。该组织负责 Flask 核心及一系列官方扩展的维护工作。项目文档托管在 Read the Docs 上,PyPI 发布版本保持常规更新。

对于需要在 Flask 项目中处理表单的开发者,Flask-WTF 提供了一套开箱即用的方案,省去了手动集成 WTForms 和配置 CSRF 保护的步骤。

I 发布版本保持常规更新。

对于需要在 Flask 项目中处理表单的开发者,Flask-WTF 提供了一套开箱即用的方案,省去了手动集成 WTForms 和配置 CSRF 保护的步骤。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值