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)
结果如图: