在 Cerberus (Python) 中,有没有一种方法可以创建允许字典中任何键名的模式?
In Cerberus (Python) is there a way to create a schema that allows any key name in a dictionary?
给定一个字典,其中顶级键可以是任何值,但这些键的值中有一个严格的模式:
{"rand_value": ["key1": "val1", "key2": "val2"], "another_rand_value": ["key1": "val1", "key2": "val2"]}
我可以创建一个 Cerberus 架构来执行此操作吗?
Cerberus 必须知道字段名称,这样它才能确定适用于它的验证规则,因此您不能完全按照您的要求进行操作。没有适用于整个文档的“顶级”规则,并且 Cerberus 不支持字段名称的通配符。
但是,您可以根据文档中存在的实际字段名称“即时”构建架构,然后对其进行验证。
v = cerberus.Validator()
document = {"rand_value": {"key1": "val1", "key2": "val2"},
"another_rand_value": {"key1": "val1", "key2": "val2"}}
fieldrule = {"type": "dict", "keysrules": {"type": "string"}} # etc
v.validate(document, {field: fieldrule for field in document})
给定一个字典,其中顶级键可以是任何值,但这些键的值中有一个严格的模式:
{"rand_value": ["key1": "val1", "key2": "val2"], "another_rand_value": ["key1": "val1", "key2": "val2"]}
我可以创建一个 Cerberus 架构来执行此操作吗?
Cerberus 必须知道字段名称,这样它才能确定适用于它的验证规则,因此您不能完全按照您的要求进行操作。没有适用于整个文档的“顶级”规则,并且 Cerberus 不支持字段名称的通配符。
但是,您可以根据文档中存在的实际字段名称“即时”构建架构,然后对其进行验证。
v = cerberus.Validator()
document = {"rand_value": {"key1": "val1", "key2": "val2"},
"another_rand_value": {"key1": "val1", "key2": "val2"}}
fieldrule = {"type": "dict", "keysrules": {"type": "string"}} # etc
v.validate(document, {field: fieldrule for field in document})