-
Flask—WTF(集成的web表单处理)理论
2020-05-12 00:32:193 什么是表单处理?4 常见的Field类5 Validator 验证函数6 flask-wtf的使用流程 1 作用 flask-wtf 避免重复操作, 表单操作很多; 防止表单遭遇跨站请求伪造(csrf===cross-site request forgery); 2 为什么使用Flask...1 作用
flask-wtf
- 避免重复操作, 表单操作很多;
- 防止表单遭遇跨站请求伪造(csrf===cross-site request forgery);
2 为什么使用Flask-WTF?
request对象公开了所有客户端发送的请求信息。特别是request.form可以访问POST请求提交的表单数据。
尽管Flask的request对象提供的支持足以处理web表单,但依然有许多任务会变得单调且重复。表单的HTML代码生成和验证提交的表单数据就是两个很好的例子。
优势:- Flask-WTF扩展使得处理web表单能获得更愉快的体验。该扩展是一个封装了与框架无关的WTForms包的Flask集成。
3 什么是表单处理?
在网页中,为了和用户进行信息交互总是不得不出现一些表单。flask设计了WTForm表单库来使flask可以更加简便地管理操作表单数据。
WTForm中最重要的几个概念如下:- 1). Form类,开发者自定义的表单必须继承自Form类或者其子类。
Form类最主要的功能是通过其所包含的Field类提供对表单内数据的快捷访问方式。 - 2). 各种Field类,即字段。一般而言每个Field类都对应一个input的HTML标签。
比如WTForm自带的一些Field类比如BooleanField就对应<inputtype=“checkbox”>, SubmitField就对应<inputtype=“submit”>等等。 - 3). Validator类。这个类用于验证用户输入的数据的合法性。比如Length验证器可以用于验证输入数据的长度,FileAllowed验证上传文件的类型等等。
另外,flask为了防范csrf(cross-site request forgery,跨站请求伪造)攻击,默认在使用flask-wtf之前要求app一定要设置过secret_key。最简单地可以通过app.config[‘SECRET_KEY’] = 'xxxx’来配置。
4 常见的Field类型
字段类型 说明 PasswordField 密码字段,自动将输入转化为小黑点 DateField 文本字段,格式要求为datetime.date一样 IntergerField 文本字段,格式要求是整数 DecimalField 文本字段,格式要求和decimal.Decimal一样 FloatField 文本字段,值是浮点数 BooleanField 复选框,值为True或者False RadioField 一组单选框 SelectField 下拉列表,需要注意一下的是choices参数确定了下拉选项, 但是和HTML中的 标签一样,其是一个tuple组成的列表,可以认为每个tuple的第一项是选项的真正的值,而第二项是alias。 MultipleSelectField 可选多个值的下拉列表 5 Validator 验证函数
Validator是验证函数,把一个字段绑定某个验证函数之后,flask会在接收表单中的数据之前对数据做一个验证,如果验证成功才会接收数据。验证函数Validator如下,具体的validator可能需要的参数不太一样,这里只给出一些常用的,更多详细的用法可以参见wtforms/validators.py文件的源码,参看每一个validator类需要哪些参数:
基本上每一个validator都有message参数,指出当输入数据不符合validator要求时显示什么信息。验证函数 说明 Email 验证电子邮件地址的合法性,要求正则模式是.+@([.@][^@]+)$ EqualTo 比较两个字段的值,通常用于输入两次密码等场景,可写参数fieldname,不过注意其是一个字符串变量,指向同表单中的另一个字段的字段名。 IPAddress 验证IPv4地址,参数默认ipv4=True,ipv6=False。如果想要验证ipv6可以设置这两个参数反过来。 Length 验证输入的字符串的长度,可以有min,max两个参数指出要设置的长度下限和上限, 注意参数类型是字符串,不是INT!! NumberRange 验证输入数字是否在范围内,可以有min和max两个参数指出数字上限下限,注意参数类型是字符串,不是I数里可以设置%(min)s和%(max)s两个格式化部分,来告诉前端这个范围到底是多少。其他validator也有这种类似的小技巧,可以参看源码。 Optional 无输入值时跳过同字段的其他验证函数 Required 必填字段 Regexp 用正则表达式验证值,参数regex=‘正则模式’ URL 验证URL,要求正则模式是[a-z]+://(?P<host>[/:]+)(?P< port>:[0-9]+)?(?P< path>/.*)?$ AnyOf 确保值在可选值列表中。 NoneOf 确保值不在可选值列表中 6 flask-wtf的使用流程
-
1). 编写forms.py文件, 定义一个关于表单的类;(***注意: 一定要有提交的按钮);
-
2). 业务逻辑文件app.py中,
- 实例化表单类; form = RegisterForm()
- 验证表单内容是否提交成功? form.validate_on_submit():
- 获取表单里面的内容(两种方法):
- 通过request对象获取: request.form[‘key值’];
- 通过form对象获取: form.key值.data -
3). 表现逻辑文件wtf.html中:
- 导入wtf模块: {% import “bootstrap/wtf.html” as wtf %}
- 自动生成表单对应的html: {{ wtf.quick_form(form) }}
-
简述Web程序开发流程
2019-11-27 15:57:56总体开发流程 分析需求, 列出功能清单或写需求说明书。 设计程序功能, 写功能规格书和技术规格书。 进入开发与测试的迭代。 调试和性能等专项测试...编写视图函数和相关的处理函数(API编写) 和前端联调测试 ... -
web工作流管理系统开发之十二 同一张表单在流程多节点中流转的权限控件
2014-02-19 18:26:14文章,没有具体的去实现,实践证明,同一张表单在多流程节点中流转,是工作流和电子表单必须要处理的问题。 工作流系统和电子表单相结合,达到同一张表单在流程的各个节点中的权限不同。 例如一张表单包含...以前写过一篇 表单权限与流程的权限控制;文章,没有具体的去实现,实践证明,同一张表单在多流程节点中流转,是工作流和电子表单必须要处理的问题。
工作流系统和电子表单相结合,达到同一张表单在流程的各个节点中的权限不同。
例如一张表单包含,录入部分信息,审核部分信息;
当表单在录入的时候,需要将审核部分信息全部屏蔽;
当上级审核时,录入部分的信息需要只读,只能填写审核部分;
当审核完成后,所有的信息都变成只读,不能再修改了。
所有这些节点调用同一张电子表单来实现,则需要根据人员角色的不通,表单中各控件分别设置为 只读, 禁用,隐藏;通过设置控件的这些属性达到各人员角色的不通访问权限;
但是单有这一层控制还是不够的,还需要设置控件在流程的各节点的权限,通过设置控件在指定流程的各个动作节点的访问权限,来达到控件在流程的某个节点的 只读,禁用,隐藏。
只读 对应 readonly
禁用 对应 disabled="true";
隐藏 对应 display = "none"
实现的过程:
1、在电子表单制作的时候,各个控件属性页中,设置控件的权限:分 设置用户,设置角色,设置群组,设置流程节点;
如下图:
-
Web开发流程
2019-12-15 20:04:20分析需求,列出功能清单或写需求说明书。 设计程序功能,写功能规格书的技术规格书。 进入开发与测试的迭代。 调式和性能等专项测试。 部署上线。 运行维护与营销。...编写表单类。...-《Flask Web ...- 分析需求,列出功能清单或写需求说明书。
- 设计程序功能,写功能规格书的技术规格书。
- 进入开发与测试的迭代。
- 调式和性能等专项测试。
- 部署上线。
- 运行维护与营销。
前端开发:
- 根据功能规格书画页面草图。
- 根据草图做交互式原型图。
- 根据原型图开发前端页面。
后端开发:
- 数据库建模。
- 编写表单类。
- 编写视图函数和相关的处理函数。
- 在页面中使用Jinja2替换虚拟数据。
-《Flask Web 开发实践入门、进阶与原理解析》李辉 著
-
Java Web学习3(Servlet技术2-表单数据处理)
2020-04-24 15:03:051、Servlet的工作流程 客户端(浏览器)提交对Servlet调用的Get或Post请求。 服务端接到请求后,如果对Servlet是第一次调用,则实例化这个Servlet。 服务器调用该Servlet对象的service()方法。 服务器产生动态的... -
web工作流管理系统开发之六 表单权限与流程的权限控制
2014-09-22 09:49:16同一张表单需要在流程的多个环节中处理,且各环节的处理情况不一致,有的节点可写,有的节点之可读。 例如,同一张报销单:员工填写报销单时,只能填写报销单主体信息和明细部分,其它信息不可见; 经理... -
python-flask(二)集成bootstrap、集成web表单、集成邮件发送
2019-03-05 14:52:27文章目录一.flask集成...二.Flask中集成的web表单处理1. 为什么使用Flask-WTF?2. 什么是表单处理?3. 常见的Field类4.flask-wtf的使用流程在设计的页面里实现表单三、Flask中集成邮件发送 一.flask集成boots... -
PHP表单处理篇
2016-03-12 17:17:51而POST方式,提交的数据都嵌入到了HTTP请求头中,不明文给客户端,所以更加安全,但是仅仅它们自提供的安全限制还不够,是不能防止黑客进行攻击的,所以下面结合登录例子总结下表单的验证处理流程和规则(技术讨论群... -
Web开发项目简单流程
2012-08-24 23:22:51通用的Web开发流程: (1)1.定义一个表单页面,用户提交表单就可以提交页面。 2.定义一个超链接,用户单击超链接就可以发送请求。 (2)定义一个处理请求的Servlet。 (3)在service中为该请求增加一个... -
Spring Security 认证处理流程源码
2018-07-19 15:57:52一、UsernamePasswordAuthenticationFilter org.springframework.security.web....第一个验证处理过滤器类,负责处理表单登录请求获,取请求中带的username、password,使用username、password构建org... -
SpringMVC框架Java Web项目中消息传递的流程
2018-10-01 13:29:11用springmvc框架搭建了一个web表单处理例子,本文分析一下从用户发送请求到返回响应的处理过程 -
spring MVC之用表单控制器处理表单(一)
2011-07-24 16:47:53spring MVC之用表单控制器处理表单(一) ---------- 创建表单控制器 ...在web应用程序中,经常要处理表单。...Spring MVC提供的SimpleFormController类定义了基本的表单处理流程。它支持命... -
Tornado,表单处理,一样在行
2016-05-16 14:25:01哟,处理流程还算自然。。。 import os.path import random import tornado.httpserver import tornado.ioloop import tornado.options import tornado.web from tornado.options import define, opt... -
一、Struts2框架处理流程和环境的安装和配置
2019-05-24 19:17:30Struts2框架处理流程 用户在Web前端页面的点击表单提交按钮,即向服务器发送一个请求。 读取web.xml文件关于Struts核心过滤器的配置的内容,加载Struts2的核心过滤器,对用户请求进行拦截。 根据... -
Struts2框架搭建,项目创建流程,实现登录以及Action的三种实现方式,表单数据处理的三种方式,struts.xml...
2019-03-19 23:18:01Struts2框架应用基本流程与框架配置 1.struts框架实现web应用的基本配置 ①.JDK+Tomcat+Struts2 需要注意版本的匹配问题 ②.Web.xml关于struts中前端控制器的选择和配置 1)路径:不同版本的路径不同, 2)处理类... -
Servlet简介 基本流程 实现及要求+表单提交
2020-07-15 19:12:30Servlet简介 ...4.会将处理后的结果向web服务器返回应答 5.WEB服务器将从servlet收到的应答发回给客户端 servlet实现 interface Servlet ← GenericServlet ←HttpServlet← 自定义Servlet 实现要求 如果要 -
-
如何解决流程的表单引擎中的附件预览问题?
2020-05-28 08:36:12流程引擎,表单引擎,附件预览ccbpm,ccflow,jflow, 使用指定的预览附件的插件 应用背景 驰骋的表单引擎的附件,可以上传的web服务器上,也可以上传到ftp服务器上,只要在附件属性里设置可以了,如下图: ... -
在Bootstrap开发框架的工作流模块中实现流程完成后更新资料状态处理
2018-11-15 10:26:00在开发查看流程表单明细的时候,在Web界面中...那么如果在一些特殊的表单处理过程中,我们在审批完成后需要触发一个事件来修改一些业务表的数据的处理的话,就会变得麻烦起来,通用的处理就代表要损失一部分灵活性,... -
3 django系列之Form表单在前端web界面渲染与入库保存
2016-12-30 20:29:00我们在前端写表单的时候,其实可以使用django自带的forms功能来实现,特别是在处理 修改已经存在数据 的场景特别好用,下面说说他。 后台代码 我们先从后台说起,这个流程是这样的:当用户查看某一个条目的详细新的...
-
3月1日(补)
-
我的笔记本.onepkg
-
MySQL 查询与高级查询(多表、嵌套和正则表达式)
-
零基础极简以太坊智能合约开发环境搭建并开发部署
-
nn.Conv2d的解释
-
MySQL 高可用工具 heartbeat 实战部署详解
-
【布道者】Linux极速入门
-
自定义模板自动生成.rar
-
精通编译Makefile,Nina, 从底层uboot到Android
-
NSGA2-master.zip
-
C/C++反汇编解密
-
计算机操作系统思维导图第一章os引论2.0.pdf——西安电子科技大学第四版——免费下载
-
Java中9种常见的CMS GC问题分析与解决
-
Python--web自动化的学习目录
-
04.建造者模式
-
web开发(菜鸟教程)h5+css+js(jQuery).zip
-
mac微软雅黑字体-亲测可用-mac14-15全部测试可用.zip
-
ISO 12402-7:2020 材料和组件的安全要求和测试方法 - 最新完整英文版(86页)
-
Unity切换场景时光照探头失效问题处理
-
论文解读《A Novel Global Localization Approach Based on Structural Unit Encoding and Multiple Hypoth》