表单 Flask-WTF - 校验器
1 wtforms内置的校验器
Class wtforms.validators.DataRequired(message=None)
此验证器将会检测field是否输入了数值,实际上是进行了if field.data操作。并且,如数数据是一个字符串,那么只包含空格的字符串将会被认为是False。
参数:message-当验证失败时返回的错误消息数:message-当验证失败时返回的错误消息
class wtforms.validators.Email(message=None)
此验证器验证Email的地址,注意只会验证Email的格式,最好在使用的时候你能够自己校验他的真实性,比如激活或者查找
参数:message-当验证失败时返回的错误消息验证失败时返回的错误消息
class wtforms.validators.EqualTo(fieldname, message=None)
用于比较两个Field的数据是否相等。
参数: filedname-你要比较的另一个Field的名称
message-当验证失败时返回的错误消息,可以用%(other_label)s和 %(other_name)s来更提供更多的错误消息
此验证器可用于验证一个或者多个相同field的情景,更改密码的代码
class wtforms.validators.InputRequired(message=None)
用于验证field有数据输入,注意与DataRequired的区别,InputRequired主要看是否输入了数据,而DataRequired用于那些强制Post的数据
class wtforms.validators.IPAddress(ipv4=True, ipv6=False, message=None)
ipv4-当为Ture时,允许有效的IPv4地址(默认为True)
ipv6-当为Ture时,允许有效的IPv6地址(默认为False)
参数:message-当验证失败时返回的错误消息
class wtforms.validators.Length(min=-1, max=-1,message=None)
验证字符串的长度
min-输入的最小的字符串长度,如果未指定,则不校验最小字符串
max-输入的最大的字符串长度,如果未指定,则不校验最大字符串
message-当验证失败时返回的错误消息,如果需要,可以通过%(min)d,%(max)d来自行设置
class wtforms.validators.NumberRange(min=None, max=None,message=None)
用于验证数据是否在最小值与最大值之间,支持的常用的数据类型,如float等,不只是int
min-输入的最小的字符串长度,如果未指定,则不校验最小字符串
max-输入的最大的字符串长度,如果未指定,则不校验最大字符串
message-当验证失败时返回的错误消息,如果需要,可以通过%(min)d,%(max)d来自行设置
class wtforms.validators.Regexp(regex, flags=0, message=None)
通过正则表达式验证
regex-正则表达式,也可以通过参数传递
flags-regex使用标示,如re.IGNORECASE,如果regex不是一个字符串将忽略
message-当验证失败时返回的错误消息
class wtforms.validators.URL(require_tld=True, message=None)
通过正则表达式对URL进行简单的验证,与Email验证器相似,可能在之后需要其他的方式验证其真实性
require_tld-当设置为True时,必须在域名中包含顶级域名等,当需要验证localhost时设置为False
2 自定义验证器 - namefield验证器
在类里面,编写 def validate_namefieldxxx(form, field)函数,通过raise ValidationError提示错误信息,编写在类里面的验证器,不需要在显示在feild里面指定validators=, 比如
class LoginForm(Form):
openid = StringField('openid', validators=[DataRequired()])
remember_me = BooleanField('remember_me', default=False)
def validate_remember_me(form, field):
if field.data != False:
raise ValidationError('remember_me must be False')
3 自定义验证器 - 把验证器编写成单独的函数
这样需要在feild里面指定validators=,比如
def validate_remember_me(form, field):
if field.data != False:
raise ValidationError('remember_me must be False2')
class LoginForm(Form):
openid = StringField('openid', validators=[DataRequired()])
remember_me = BooleanField('remember_me', default=False,
validators=[validate_remember_me ])
4 自定义验证器 - 把验证器编写成单独的类
class Length(object):
def __init__(self, min=-1, max=-1, message=None):
self.min = min
self.max = max
if not message:
message = u'Field must be between %i and %icharacters long.' % (min, max)
self.message = message
def __call__(self, form, field):
l = field.data and len(field.data) or 0
if l < self.min or self.max != -1 and l > self.max:
raise ValidationError(self.message)
length = Length
class MyForm(Form):
name = StringField('Name', [InputRequired(), length(max=50)])
表单 Flask-WTF - 校验器的更多相关文章
- JavaWeb -- Struts2,对比, 简单表单提交,校验,防重复提交, 文件上传
Struts2核心流程图 1. Struts2 和 Struts1 对比 struts1:基于Servlet(ActionServlet),actionForm众多(类的爆炸),action单例(数据 ...
- iview form表单数值类型校验「iview自定义form表单校验器」
摘录iview表单验证 Form 组件基于 sync-validator 实现的数据验证,给 Form 设置属性 rules,同时给需要验证的 FormItem 设置属性 prop 指向对应字段即可. ...
- Angular使用总结 ---以密码确认为例实现模版驱动表单的自定义校验
上一篇 总结了模版驱动表单的基本用法,示例中的校验使用的是原生HTML5的校验方式,本文补上自定义校验的部分. HTML5原生的表单校验属性(必填,长度限制,取值间隔,正则表达式等等)可以满足普通的校 ...
- day75 form 组件(对form表单进行输入值校验的一种方式)
我们的组件是什么呢 select distinct(id,title,price) from book ORM: model.py class Book(): title=model.CharFiel ...
- Laravel Form 表单的数据校验
例如,要使用手机号加验证码的方式提供登录网站的功能,那么在处理前端提交的 form 表单时,就不得不对提交的手机号及验证码做基本的数据校验. 手写规则,非常浪费时间.使用 laravel 内置的 va ...
- struts2 自带的 token防止表单重复提交拦截器
在struts2中,我们可以利用struts2自带的token拦截器轻松实现防止表单重复提交功能! 1. 在相应的action配置中增加: <interceptor-ref name=&quo ...
- 使用JS完成注册表单的数据校验
1.前台校验 防君子不防小人 JavaScript被设计用来向HTML页面添加交互行为 JavaScript是一种脚本语言(脚本语言是一种轻量级的编程语言) JavaScript由数行可执行计算机代码 ...
- Angular11 模板表单、响应式表单(自定义验证器)、HTTP、表单元素双向绑定
1 模板表单 模型通过指令隐式创建 技巧01:需要在模块级别引入 FormsModule ,通常在共享模块中引入再导出,然后在需要用到 FormsModule 的模块中导入共享模块就可以啦 impor ...
- Dwz/Jquery--使用Ajax提交表单时调用表单设置的校验
案例 今天有一个需求就是点击按钮时,使用ajax方式提交表单,而且不是直接用form表单下的submit按钮提交,表单中用的校验是dwz 自带的校验方式,表单模板如下: <li><d ...
- 关于iview、element-ui重置表单并清除校验的方法
平时在使用iview或者vue重置表单是时,我会习惯使用 this.$refs[formData].resetFields(); 但是直接这样写上去方法是不起作用的, 内容必须要在每个form-ite ...
随机推荐
- 英特尔vPro博锐技术激活
英特尔vPro博锐技术激活 参考: Intel官方Management Engine BIOS Extension (Intel®MEBX)手册:http://www.intel.com/conten ...
- js中this关键字用法详解
1.全局环境中的this 在全局环境中,this 指向全局对象Global,即 window 对象 如: alert(this); // 显示 [object Window] alert(this = ...
- modelsim仿真xilinx ram输出均为0
现象 在vivado2018.3下生成了RAM IP,丢到modelsim中仿真发现doutb输出均为0.调整AB端口的时钟速率,发现低于5ns不行,输出为0.但5ns以上正常. 解决方法 比对了vi ...
- jvm系列(十):如何优化Java GC「
转自:https://www.cnblogs.com/ityouknow/p/7653129.html 本文由CrowHawk翻译,地址:如何优化Java GC「译」,是Java GC调优的经典佳作. ...
- SAP UI5的support Assistant
SAP UI5的support Assistant给UI5刚入门的开发人员提供了一种极便利的快速熟悉UI5代码的途径. 召唤方式: ctrl+shift+alt+p四个键同时按,在弹出的对话框里点击按 ...
- swore tcp服务学习
TcpServer.php <?php /** * Created by PhpStorm. * User: mac * Date: 2019/9/13 * Time: 20:33 */ cla ...
- sqlplus set相关设置
Oracle里的set零零碎碎的,这里整理归纳一下 SQL> set timing on; //设置显示“已用时间:XXXX” SQL> set autotrace on ...
- api的日志
package cn.com.acxiom.coty.wechat.ws.bean.po; import java.util.Date; public class WebserviceLogWecha ...
- mongodb索引 复合索引
当我们的查询条件不只有一个时,就需要建立复合索引,比如插入一条{x:1,y:2,z:3}记录,按照我们之前建立的x为1的索引,可是使用x查询,现在想按照x与y的值查询,就需要创建如下的索引 创 ...
- Hadoop添加LZO压缩支持
启用lzo的压缩方式对于小规模集群是很有用处,压缩比率大概能降到原始日志大小的1/3.同时解压缩的速度也比较快. 安装 准备jar包 1)先下载lzo的jar项目https://github.com/ ...