3

有没有办法告诉 cerberus默认设置为模式中的所有键requiredTrue这会节省我一些时间,因为大多数情况下我想断言密钥的存在。

4

1 回答 1

3

我认为没有通用的解决方案,不同的方法适用于不同的整体场景。让我提出两个:

扩展架构

这相当简单,只需required在使用之前将规则添加到模式的所有字段中:

for field in schema:
    field['required'] = True

自定义验证器

由于Validator该类有一个方法可以检查有关此规则的所有字段,因此可以在子类中覆盖它:

from cerberus import errors, Validator


class MyValidator(Validator):
    def __validate_required_fields(self, document):
        for field in self.schema:
            if field not in document:
                self._error(field, errors.REQUIRED_FIELD)

请注意,此提案并未将excludes规则视为原始实现。

但是,由于这是非公开方法的一部分,因此底层设计可能会在未来不经宣布发生变化。

于 2017-09-28T13:54:58.613 回答