我正在尝试在 YAML 中为 python cerberus 库定义我的验证器模式,因为它更具人类可读性。我遇到了一个问题,如果我尝试在 YAML 中定义强制函数,我会得到一个 SchemaError。从Normalizing string to date in cerbrus的示例开始,我将其修改为使用 YAML 模式。
import datetime
import yaml
st = '''
start_date:
type: datetime
coerce: to_date
'''
schema = yaml.load(st)
v = cerberus.Validator()
to_date = lambda s: datetime.strptime(s, '%Y-%m-%d')
v.schema = schema
v.validate({'start_date': '2017-10-01'})
我得到错误:
SchemaError: {'start_date': [{'coerce': ['none or more than one rule validate', {'oneof definition 0': ['must be of callable type'], 'oneof definition 1': ['must属于列表类型'], 'oneof definition 2': ['unallowed value to_Date']}]}]}
定义基于 YAML 的模式支持的强制函数还是我需要切换回使用 JSON?