cerberus中字符串验证的N元素列表



我如何验证某个类型是一个列表,并且它只包含未知数量的字符串元素?

我目前的解决方案是

'categories_id' : {'required' : False, 'type' : ['string','list']},

但它并没有起到作用,当你只提供一个字符串,而不是在列表中时,它也会返回True

问题'categories_id' : {'required' : False, 'type' : ['string','list']}中提到的模式使Cerberus检查categories_id字段是字符串还是列表。因此,单个字符串将返回true。

为了让Cerberus检查categories_id是一个包含任意项目数的字符串列表,应该使用以下模式

{'categories_id': {'required': False, 'type': 'list', 'schema': {'type': 'string'}}}

我还没有找到使用cerberus实现这一点的方法,但它应该非常简单,没有任何模块:

def validate(l):
if isinstance(l, list):
return all(isinstance(I, str) for i in l)

这可以使用valuesrules完成

>>> schema = {'categories_id':
...              {'type': 'list',
...               'valuesrules': {'type': 'string'}}}

最新更新