有没有办法告诉 cerberus默认设置为模式中的所有键required
?True
这会节省我一些时间,因为大多数情况下我想断言密钥的存在。
问问题
393 次
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 回答