Python数据验证库Cerberus

可验证数据是否符合指定的模式,并且提供了自定义规则的功能,常见使用。

1. 安装

pip install cerberus

2. 使用代码示例(python3)

(1)基础使用

from cerberus import Validator

# 定义验证规则
schema = {
    'name': {
        'type': 'string',
        'minlength': 3,
        'maxlength': 20,
        'required': True,
    },
    'age': {
        'type': 'integer',
        'min': 0,
        'max': 120,
        'required': True
    },
    'email': {
        'type': 'string',
        'regex': r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$',
    }
}

# 创建验证器对象
validator = Validator(schema, allow_unknown=True)   # allow_unknown,未知字段不验证


# 模拟数据
data = {
    'name': 'John Doe',
    'age': 150,
    'email': '[email protected]',
    'test': '123'
}


# 开始验证数据
if validator.validate(data):
    print("数据验证成功!")
else:
    print("数据验证失败 errors:")
    print(validator.errors) #  {'age': ['max value is 120']}
    for field, errors in validator.errors.items():
        print(f"Field '{field}': {', '.join(errors)}")

(2)验证字典格式

schema = {
    'person': {
        'type': 'dict',
        'schema': {
            'name': {'type': 'string', 'required': True},
            'age': {'type': 'integer', 'required': True},
        },
        'required': True,
    },
}

validator = Validator()

data = {
    'person': {
        'name': 'John Doe',
        'age': 30,
    },
}

if validator.validate(data, schema):
    print("数据验证成功!")
else:
    print("数据验证失败 errors:")
    print(validator.errors)

(3)自定义验证函数

def custom_validation(field, value, error):
    if len(value) < 5:
        error(field, "最少5个字符: %s " % len(value))


schema = {
    'password': {'type': 'string', 'validator': custom_validation},
}

validator = Validator(schema)

data = {
    'password': '1234'
}

if validator.validate(data):
    print("数据验证成功!")
else:
    print("数据验证失败 errors:")
    print(validator.errors)

(4)验证列表格式

schema = {
    'list_key': {
        'type': 'list',
        'schema': {
            'type': 'dict',
            'schema': {
                'name':
                    {
                        'type': 'string',
                        'required': True,
                        'empty': False
                    },
                'relationship': {
                    'type': 'string',
                    'required': True,
                    'empty': False
                }
            }
        }
    }
}

data = {"list_key": [{'name': 'Mary', 'relationship': 'sister'}, {'name': 'Tom', 'relationship': 'brother-in-law'}]}

validator = Validator(schema)

if validator.validate(data):
    print("数据验证成功!")
else:
    print("数据验证失败 errors:")
    print(validator.errors)

你可能感兴趣的:(python,开发语言)