gpt4 book ai didi

在 Cerberus 中验证自定义类型

转载 作者:行者123 更新时间:2023-12-01 12:13:16 26 4
gpt4 key购买 nike

我真的很喜欢 Cerberus,但我无法在文档中找到一个简单的案例。我想要 fudge 类型,它是一个带有 ~ 前缀的字符串。我根本不知道该怎么做..

fudge_type = cerberus.TypeDefinition('fudge_type', (str,), ())

class MyValidator(cerberus.Validator):
types_mapping = cerberus.Validator.types_mapping.copy()
types_mapping['fudge'] = fudge_type

def __init__(self, *args, **kwargs):
if 'additional_context' in kwargs:
self.additional_context = kwargs['additional_context']
super(MyValidator, self).__init__(*args, **kwargs)

@property
def additional_context(self):
self._error(field, "INVALID!")
return self._config.get('additional_context', 'bar')

def _validate_type_fudge(self, field, value):
self._error(field, "INVALID!")
make_use_of(self.additional_context)

validator = MyValidator()
validator.validate({'name': 'yada'}, {'name': {'type': 'fudge'}}) # => True

这似乎是一个简单的案例..所以感觉我做的事情完全错了。

最佳答案

在 Cerberus 1.2 中,您可以像下面这样实现:

import cerberus

SCHEMA = {
'fudge': {
'type': 'mytype'
}
}

class MyValidator(cerberus.Validator):
def _validate_type_mytype(self, value):
if value.startswith('~'):
return True

validator = MyValidator()
validator.validate({'fudge': 'yada'}, SCHEMA)

因此无需修改 TypeDefinition

关于在 Cerberus 中验证自定义类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50258249/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com