我正在尝试构建一个模式,其中语句可以是单个字典或字典列表。前任:
{'Document': {'key': 'value'}}
或多个键:
{'Document': [ {'key1': 'value1'}, {'key2': 'value2'}, {'key3': 'value3'}]}
按照我使用此架构测试的文档:
v.schema = {'Document': {'type': ['dict', 'list'], 'schema': {'type': 'dict'}}}
这是输出:
>>> v.schema = {'Document': {'type': ['dict', 'list'], 'schema': {'type': 'dict'}}}
>>> v.validate({'Document': [{'key1': 'value1'}, {'key2': 'value2'}, {'key3': 'value3'}]})
True
>>> v.validate({'Document': {'key': 'value'} })
False
>>> v.errors
{'Document': ['must be of dict type']}
测试代码:
import cerberus
if __name__ == '__main__':
v = cerberus.Validator()
v.schema = {'Document': {'type': ['dict', 'list'], 'schema': {'type': 'dict'}}}
print(v.validate({'Document': [{'key1': 'value1'}, {'key2': 'value2'}, {'key3': 'value3'}]}))
print(v.validate({'Document': {'key': 'value'}}))
print(v.errors)
第二种情况,该值是 dict 类型,但我收到此错误,而不是正确解释架构。