最简单用法

# 最简单用法
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参数校验相关推荐

  1. SpringBoot中的Validator参数校验器——通过注解的方式控制controler接收参数的规则

    前言 在日常的接口开发中,经常要对接口的参数做校验,例如,登录的时候要校验用户名密码是否为空.但是这种日常的接口参数校验太烦锁了,代码繁琐又多. Validator框架就是为了解决开发人员在开发的时候 ...

  2. golang validator参数校验 中文

    今天在改后台页面,参数校验错误时输出全是英文,使用着很难看懂到底时什么错了 故而决定去做i18n前端国际化. 改的时候踩了很多坑,故而记录一下,顺便记录以下查问题的方式. 效果 从原来的Title i ...

  3. python 类初始化参数校验_如何规避python参数的初始化次数?

    我们在内存不足的时候,除了增加内存的可用度,可以进行一个清理内存的初始化操作,当然这种是最后迫不得已的选择.我们在python中也有需要用到初始化的地方,鉴于参数和函数的关系密不可分,本篇我们会简单的 ...

  4. python 类初始化参数校验_python之类的任意数量参数初始化

    python中在对类的函数初始化时,可以传入多个参数,甚至任意数量的参数 比如: class  Person(object): def __init__(slef, name, age, **kw): ...

  5. Iris——整合go-playground/validator参数校验Demo

    源代码:https://gitee.com/shentuzhigang/mini-project/blob/master/iris_validator 解决方案 go.mod require (git ...

  6. Validator 参数校验springboot整合Validator,自定义手机号参数校验

    https://blog.csdn.net/m0_46425463/article/details/108006414

  7. Java代码简洁-validation参数校验

    validation参数校验 bean validation和hibernate validator参数校验 常用注解 1.导入依赖 2.测试 3.自定义消息模板 4.分组校验 5.级联校验 6.自定 ...

  8. SpringBoot 如何进行参数校验,老鸟们都这么玩的!

    大家好,我是飘渺. 前几天写了一篇 SpringBoot如何统一后端返回格式?老鸟们都是这样玩的! 阅读效果还不错,而且被很多号主都转载过,今天我们继续第二篇,来聊聊在SprinBoot中如何集成参数 ...

  9. 【Java】参数校验与统一异常处理

    Java参数校验与统一异常处理 [前言]参数校验是接口开发不可或缺的环节,校验参数在以前基本上依靠大量的if/else控制语句来实现,后来可以使用反射+自定义注解的形式进行校验,但是复用性不是很好.其 ...

最新文章

  1. c语言找出比n小的最大质数,C++ 实现求小于n的最大素数的实例
  2. 如何成为月入过万的斜杠青年
  3. C++ 协程介绍[译]
  4. 我招了个“水货”程序员
  5. 手机数控模拟器安卓版_车床模拟器2手机版下载-车床模拟器2游戏 v2.5.0安卓版_5577安卓网...
  6. CCNA 配置试验之一 静态路由
  7. JQuery和php方面的填空题,PHP复习题(问答题)
  8. 李航老师亲自推荐的《统计学习方法》课件下载
  9. py导入包异常跳出_python~异常处理及包
  10. Robocode教程3——Robo机器剖析
  11. 【leetcode】面试题 03.03. 堆盘子vector_stack的使用
  12. Entity Framework之问题收集
  13. 频繁项集挖掘算法之FPGrowth
  14. python PIL库的getdata()函数
  15. Mariadb 安装教程 Windows版
  16. svn图标没有显示的解决办法
  17. 洛谷P3332 K大数查询
  18. Mandriva小记
  19. 访谈录#1:成为“温赵轮”
  20. Java编写 随机对数组赋值

热门文章

  1. 如何使用Synplify综合vivado带IP核的工程
  2. 20级计算机应用数学试题,计算机等级考试试题试卷及答案.doc
  3. [Ubuntu 18.04]公共DNS设置[/etc/resolv.conf]
  4. 傅里叶变换频域积分性质和频域卷积性质证明
  5. 动画演示15年来编程语言的起起伏伏
  6. linux kernel build
  7. 金山毒霸6 、金山网镖6 增强版 发布在即!!!
  8. VUE指令大全(详解)
  9. python写篮球游戏_程序员们把“蔡徐坤打篮球”写成了一个游戏
  10. MySQL创建表视图及多表视图