Flask WTForms 表单插件的使用
在Web应用中,表单处理是一个基本而常见的任务。Python的WTForms库通过提供表单的结构、验证和渲染等功能,简化了表单的处理流程。与此同时,Flask的扩展Flask-WTF更进一步地整合了WTForms,为开发者提供了更便捷、灵活的表单处理方式。Flask-WTF是建立在WTForms之上的Flask扩展,旨在简化Web应用中表单处理的流程。它提供了与Flask框架的无缝集成,使得表单的创建、验证和渲染变得非常容易。通过Flask-WTF,开发者能够轻松地构建具有强大功能和良好用户体验的表单页面。
主要特点:
- 结合WTForms功能: Flask-WTF基于WTForms库,继承了WTForms的强大功能,包括表单字段、验证器等,为开发者提供了一套完备的表单处理工具。
- Flask集成: 与Flask框架无缝集成,通过简单的导入和初始化,即可在Flask应用中使用Flask-WTF提供的表单处理功能。
- CSRF保护: Flask-WTF内置了CSRF(Cross-Site Request Forgery)保护机制,帮助开发者防范Web应用中的CSRF攻击。
- 表单渲染: 提供了方便的表单渲染方法,使得表单的呈现过程更为简单,开发者可以轻松定制表单的外观。
- 文件上传支持: 支持文件上传功能,使得开发者能够方便地处理包含文件上传功能的表单。
通过Flask-WTF,开发者能够以更高效的方式处理Web应用中的表单,减少重复性工作,提升开发效率。
简单验证表单
前台定义渲染模板,后端对模板渲染,并根据validators
验证器中的规则对输入内容进行匹配。
<form method="post"> |
后台定义MyFlaskForm(FlaskForm)
类用于对登录表单进行动态渲染。
from flask import Flask, render_template, request |
运行后默认构造一个账号密码登录窗口的表单,用户可以填写表单并返回给后台信息,如下图所示;
表单附加参数
所谓附加参数就是指,渲染器返回页面是主动对某个组件增加一些CSS属性,这些属性起到装饰作用,通常会使用render_kw
属性返回CSS。
{% for msg in get_flashed_messages() %} |
后台定义MyFlaskForm(FlaskForm)
类用于对登录表单进行动态渲染。
from flask import Flask, render_template, request,flash |
运行上述代码,当用户输入密码错误后会出现闪现消息,如下图所示;
地址验证表单
Flask框架中特殊表单的验证有很多,常用的表单验证也就以下这几种。
<form method="post"> |
后台定义MyFlaskForm(FlaskForm)
类用于对登录表单进行动态渲染。
from flask import Flask, render_template, request |
网络IP地址的验证也有相应的表单,如下表单分别可以实现对不同地址的验证;
特殊表单验证
WTF表单除去常规表单验证以外,还可以验证其他特殊表单,例如验证邮箱,浮点数,日期时间等。
<form method="post"> |
后台定义MyFlaskForm(FlaskForm)
类用于对登录表单进行动态渲染。
from flask import Flask, render_template, request |
特殊表单的构建,这里的表单包括了如下图所示的字段可以使用;
复选多选表单
复选框多选框与下拉选择框三种表单的验证方式总结。
<form method="post"> |
后台定义MyFlaskForm(FlaskForm)
类用于对登录表单进行动态渲染。
from flask import Flask, render_template, request |
选择菜单包括了单选与多选,如下图所示的表单均可以构建;
文件上传表单
文件上传Flask也提供了默认表单可以使用,如下提供的FileField
即可完成上传工作。
<form method="POST" action="" enctype="multipart/form-data"> |
后台定义MyFlaskForm(FlaskForm)
类用于对登录表单进行动态渲染。
from flask import Flask, render_template, request |
上传表单时需要注意,启动的进程必须具备管理员权限或者是读写权限,否则则会提示权限拒绝;