在 cerberus 中默认设置为 True

Have required set to True by default in cerberus

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

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

扩展架构

这很简单,只需在使用它之前将 required 规则添加到架构的所有字段即可:

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

自定义验证器

由于 Validator class 有一个方法可以检查与此规则相关的所有字段,因此可以在子 class:

中覆盖它
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 规则视为原始实施。

但是,由于这是非 public 方法的一部分,因此基础设计将来可能会更改,恕不另行通知。