1 Cerberus简介
Cerberus 是一个Python数据验证库,设计用于验证数据结构的有效性和一致性。它提供了一种简单而强大的方式来定义和应用验证规则,特别适用于处理用户输入的验证、配置文件的检查以及API的参数验证等场景。下面将详细介绍 Cerberus 的特点、使用方法以及一些示例。
2 Cerberus特点和优势
- 简单易用:Cerberus 提供了直观且简洁的验证规则定义方式,使得开发者可以快速上手并实现复杂的数据验证逻辑。
 - 灵活的验证规则:支持多种类型的数据验证,包括基本类型(字符串、数字等)、列表、字典以及嵌套结构的验证,可以根据需求定义自定义验证规则。
 - 可扩展性:允许用户定义自定义验证函数和类型处理器,从而适应特定的业务需求和复杂的数据结构。
 - 清晰的错误报告:当数据验证失败时,Cerberus 提供详细的错误报告,指出每一个验证失败的原因,帮助开发者快速定位和修复问题。
 - 轻量级和快速:设计上优化了性能和内存占用,使得在大规模数据验证场景下也能保持高效率。
 - 广泛的应用:适用于各种场景,包括 Web 开发中的表单验证、API 参数验证、配置文件的检查等。
 
3 Cerberus安装
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple cerberus 
结果如下:

4 代码示例
4.1简单示例
下面示例代码中,定义了一个包含字段名、类型和其他验证条件的验证规则 schema,然后创建了一个 Validator 实例 v,用于验证数据 data。如果数据符合规则,则 validate 方法返回 True,否则返回 False,并且可以通过 errors 属性获取详细的错误信息。
from cerberus import Validator
# 定义验证规则
schema = {
    'name': {'type': 'string', 'required': True},
    'age': {'type': 'integer', 'min': 18},
    'email': {'type': 'string', 'regex': '[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}'}
}
#创建验证器
v = Validator(schema)
# 要验证的数据
data = {
    'name':'handsome',
    'age':12,
    'email':'very.handsome@email.com'
}
# 进行验证
if v.validate(data):
    print("数据验证通过")
else:
    print("数据验证失败")
    print(v.errors)
 
 
结果如下:

4.2 高级示例
Cerberus 还支持更复杂的验证需求,如嵌套结构的验证、条件验证、自定义验证函数等。例如,可以定义嵌套结构的验证规则:
from cerberus import Validator
nested_schema = {
    'address': {
        'type': 'dict',
        'schema': {
            'street': {'type': 'string', 'required': True},
            'city': {'type': 'string', 'required': True}
        }
    }
}
nested_data = {
    'address': {
        'street': '南京市鼓楼区',
        'city': '南京'
    }
}
v = Validator(nested_schema)
if v.validate(nested_data):
    print("嵌套数据验证通过")
else:
    print("嵌套数据验证失败")
    print(v.errors)
 
结果如图:



















