python cerberus Validator参数校验
最简单用法
# 最简单用法
from cerberus import Validator
schema = {'name1': {'type': 'string'}, 'name2': {'type': 'string'}}
v = Validator(schema)document = {'name1': 'john doe', 'name2': 0}if v.validate(document):print('data is valid')
else:print(v.errors)
输出:
{'name2': ['must be of string type']}
自定义校验方法代码示例:
# coding=utf-8
from cerberus import Validatorclass ParamValidator(Validator):def __init__(self, *args, **kwargs):self.res = {}super(ParamValidator, self).__init__(*args, **kwargs)def _validator_username(self, field, value):print(" --- in _validator_username ---")print("field = {}, value = {}".format(field, value))name = value.get('username', None)print("name = {}".format(name))if not name:return self._error('error_info', 'not username')def _check_with_gender(self, field, value):print("--- in _check_with_gender ---")print("field = {} | value = {}".format(field, value))self.res.update({"field": field, "value": value})if __name__ == "__main__":# No.1 自定义前缀为:_validator_<validator_name>的校验方法document = {'data': {'username': ''}}# schema_rule中validator对应的值为username,会自动去找_validator前缀的_validator_username方法schema_rule = {"data": {'validator': 'username'}}pv = ParamValidator(schema_rule)if not pv.validate(document):print("pv.document = {}".format(pv.document))print("pv.errors = {}".format(pv.errors))else:print("validator success end ---")print('='*20 + '分割线' + '='*20)# No.2 - 自定义前缀为_check_with<field>的校验方法document = {'name': "1", 'age': 3, 'gender': 'male-'}# schema_rule中gender对应的值中check_with字段对应的值为gengder,会自动去找_check_with前缀的_check_with_gender方法执行schema_rule = {'name': {'type': 'string'},'age': {'default': 18, 'type': 'integer'},'gender': {'type': "string", "allowed": ["male", "female"], "check_with": "gender"}}pv = ParamValidator(schema_rule)res = pv.validate(document)print("res = {}".format(res))print("pv.document = {}".format(pv.document))print("pv.errors = {}".format(pv.errors))print("pv.res = {}".format(pv.res))
输出:
--- in _validator_username ---
field = data, value = {'username': ''}
name =
pv.document = {'data': {'username': ''}}
pv.errors = {'error_info': ['not username']}
====================分割线====================
--- in _check_with_gender ---
field = gender | value = male-
res = False
pv.document = {'gender': 'male-', 'age': 3, 'name': '1'}
pv.errors = {'gender': ['unallowed value male-']}
pv.res = {'field': 'gender', 'value': 'male-'}
python cerberus Validator参数校验相关推荐
- SpringBoot中的Validator参数校验器——通过注解的方式控制controler接收参数的规则
前言 在日常的接口开发中,经常要对接口的参数做校验,例如,登录的时候要校验用户名密码是否为空.但是这种日常的接口参数校验太烦锁了,代码繁琐又多. Validator框架就是为了解决开发人员在开发的时候 ...
- golang validator参数校验 中文
今天在改后台页面,参数校验错误时输出全是英文,使用着很难看懂到底时什么错了 故而决定去做i18n前端国际化. 改的时候踩了很多坑,故而记录一下,顺便记录以下查问题的方式. 效果 从原来的Title i ...
- python 类初始化参数校验_如何规避python参数的初始化次数?
我们在内存不足的时候,除了增加内存的可用度,可以进行一个清理内存的初始化操作,当然这种是最后迫不得已的选择.我们在python中也有需要用到初始化的地方,鉴于参数和函数的关系密不可分,本篇我们会简单的 ...
- python 类初始化参数校验_python之类的任意数量参数初始化
python中在对类的函数初始化时,可以传入多个参数,甚至任意数量的参数 比如: class Person(object): def __init__(slef, name, age, **kw): ...
- Iris——整合go-playground/validator参数校验Demo
源代码:https://gitee.com/shentuzhigang/mini-project/blob/master/iris_validator 解决方案 go.mod require (git ...
- Validator 参数校验springboot整合Validator,自定义手机号参数校验
https://blog.csdn.net/m0_46425463/article/details/108006414
- Java代码简洁-validation参数校验
validation参数校验 bean validation和hibernate validator参数校验 常用注解 1.导入依赖 2.测试 3.自定义消息模板 4.分组校验 5.级联校验 6.自定 ...
- SpringBoot 如何进行参数校验,老鸟们都这么玩的!
大家好,我是飘渺. 前几天写了一篇 SpringBoot如何统一后端返回格式?老鸟们都是这样玩的! 阅读效果还不错,而且被很多号主都转载过,今天我们继续第二篇,来聊聊在SprinBoot中如何集成参数 ...
- 【Java】参数校验与统一异常处理
Java参数校验与统一异常处理 [前言]参数校验是接口开发不可或缺的环节,校验参数在以前基本上依靠大量的if/else控制语句来实现,后来可以使用反射+自定义注解的形式进行校验,但是复用性不是很好.其 ...
最新文章
- c语言找出比n小的最大质数,C++ 实现求小于n的最大素数的实例
- 如何成为月入过万的斜杠青年
- C++ 协程介绍[译]
- 我招了个“水货”程序员
- 手机数控模拟器安卓版_车床模拟器2手机版下载-车床模拟器2游戏 v2.5.0安卓版_5577安卓网...
- CCNA 配置试验之一 静态路由
- JQuery和php方面的填空题,PHP复习题(问答题)
- 李航老师亲自推荐的《统计学习方法》课件下载
- py导入包异常跳出_python~异常处理及包
- Robocode教程3——Robo机器剖析
- 【leetcode】面试题 03.03. 堆盘子vector_stack的使用
- Entity Framework之问题收集
- 频繁项集挖掘算法之FPGrowth
- python PIL库的getdata()函数
- Mariadb 安装教程 Windows版
- svn图标没有显示的解决办法
- 洛谷P3332 K大数查询
- Mandriva小记
- 访谈录#1:成为“温赵轮”
- Java编写 随机对数组赋值
热门文章
- 如何使用Synplify综合vivado带IP核的工程
- 20级计算机应用数学试题,计算机等级考试试题试卷及答案.doc
- [Ubuntu 18.04]公共DNS设置[/etc/resolv.conf]
- 傅里叶变换频域积分性质和频域卷积性质证明
- 动画演示15年来编程语言的起起伏伏
- linux kernel build
- 金山毒霸6 、金山网镖6 增强版 发布在即!!!
- VUE指令大全(详解)
- python写篮球游戏_程序员们把“蔡徐坤打篮球”写成了一个游戏
- MySQL创建表视图及多表视图