在 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 方法的一部分,因此基础设计将来可能会更改,恕不另行通知。
有没有办法告诉 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 方法的一部分,因此基础设计将来可能会更改,恕不另行通知。