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')

自定义验证器 - 把验证器编写成单独的函数

这样需要在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 ])

自定义验证器 - 把验证器编写成单独的类

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 - 校验器的更多相关文章

  1. JavaWeb -- Struts2,对比, 简单表单提交,校验,防重复提交, 文件上传

    Struts2核心流程图 1. Struts2 和 Struts1 对比 struts1:基于Servlet(ActionServlet),actionForm众多(类的爆炸),action单例(数据 ...

  2. iview form表单数值类型校验「iview自定义form表单校验器」

    摘录iview表单验证 Form 组件基于 sync-validator 实现的数据验证,给 Form 设置属性 rules,同时给需要验证的 FormItem 设置属性 prop 指向对应字段即可. ...

  3. Angular使用总结 ---以密码确认为例实现模版驱动表单的自定义校验

    上一篇 总结了模版驱动表单的基本用法,示例中的校验使用的是原生HTML5的校验方式,本文补上自定义校验的部分. HTML5原生的表单校验属性(必填,长度限制,取值间隔,正则表达式等等)可以满足普通的校 ...

  4. day75 form 组件(对form表单进行输入值校验的一种方式)

    我们的组件是什么呢 select distinct(id,title,price) from book ORM: model.py class Book(): title=model.CharFiel ...

  5. Laravel Form 表单的数据校验

    例如,要使用手机号加验证码的方式提供登录网站的功能,那么在处理前端提交的 form 表单时,就不得不对提交的手机号及验证码做基本的数据校验. 手写规则,非常浪费时间.使用 laravel 内置的 va ...

  6. struts2 自带的 token防止表单重复提交拦截器

    在struts2中,我们可以利用struts2自带的token拦截器轻松实现防止表单重复提交功能! 1. 在相应的action配置中增加:  <interceptor-ref name=&quo ...

  7. 使用JS完成注册表单的数据校验

    1.前台校验 防君子不防小人 JavaScript被设计用来向HTML页面添加交互行为 JavaScript是一种脚本语言(脚本语言是一种轻量级的编程语言) JavaScript由数行可执行计算机代码 ...

  8. Angular11 模板表单、响应式表单(自定义验证器)、HTTP、表单元素双向绑定

    1 模板表单 模型通过指令隐式创建 技巧01:需要在模块级别引入 FormsModule ,通常在共享模块中引入再导出,然后在需要用到 FormsModule 的模块中导入共享模块就可以啦 impor ...

  9. Dwz/Jquery--使用Ajax提交表单时调用表单设置的校验

    案例 今天有一个需求就是点击按钮时,使用ajax方式提交表单,而且不是直接用form表单下的submit按钮提交,表单中用的校验是dwz 自带的校验方式,表单模板如下: <li><d ...

  10. 关于iview、element-ui重置表单并清除校验的方法

    平时在使用iview或者vue重置表单是时,我会习惯使用 this.$refs[formData].resetFields(); 但是直接这样写上去方法是不起作用的, 内容必须要在每个form-ite ...

随机推荐

  1. 英特尔vPro博锐技术激活

    英特尔vPro博锐技术激活 参考: Intel官方Management Engine BIOS Extension (Intel®MEBX)手册:http://www.intel.com/conten ...

  2. js中this关键字用法详解

    1.全局环境中的this 在全局环境中,this 指向全局对象Global,即 window 对象 如: alert(this); // 显示 [object Window] alert(this = ...

  3. modelsim仿真xilinx ram输出均为0

    现象 在vivado2018.3下生成了RAM IP,丢到modelsim中仿真发现doutb输出均为0.调整AB端口的时钟速率,发现低于5ns不行,输出为0.但5ns以上正常. 解决方法 比对了vi ...

  4. jvm系列(十):如何优化Java GC「

    转自:https://www.cnblogs.com/ityouknow/p/7653129.html 本文由CrowHawk翻译,地址:如何优化Java GC「译」,是Java GC调优的经典佳作. ...

  5. SAP UI5的support Assistant

    SAP UI5的support Assistant给UI5刚入门的开发人员提供了一种极便利的快速熟悉UI5代码的途径. 召唤方式: ctrl+shift+alt+p四个键同时按,在弹出的对话框里点击按 ...

  6. swore tcp服务学习

    TcpServer.php <?php /** * Created by PhpStorm. * User: mac * Date: 2019/9/13 * Time: 20:33 */ cla ...

  7. sqlplus set相关设置

    Oracle里的set零零碎碎的,这里整理归纳一下 SQL> set timing on;          //设置显示“已用时间:XXXX” SQL> set autotrace on ...

  8. api的日志

    package cn.com.acxiom.coty.wechat.ws.bean.po; import java.util.Date; public class WebserviceLogWecha ...

  9. mongodb索引 复合索引

    当我们的查询条件不只有一个时,就需要建立复合索引,比如插入一条{x:1,y:2,z:3}记录,按照我们之前建立的x为1的索引,可是使用x查询,现在想按照x与y的值查询,就需要创建如下的索引     创 ...

  10. Hadoop添加LZO压缩支持

    启用lzo的压缩方式对于小规模集群是很有用处,压缩比率大概能降到原始日志大小的1/3.同时解压缩的速度也比较快. 安装 准备jar包 1)先下载lzo的jar项目https://github.com/ ...