- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个很大的 json 文档,如果其他字段具有精确值,则应该需要其中一些字段。例如
document = {'is_realty_address': False, 'postcode': 111111}
如果 is_realty_address == False,则必须提供邮政编码。所有规则(“必需”除外)都应用于文档中存在的字段,所以我的自定义规则是无声的,当我有
document = {'is_realty_address': False}
of-rules 对我的情况没有帮助,因为我有很多“条件要求”字段,这些字段取决于许多不同的字段。因此,不规则会使我的架构复杂化。依赖项也不起作用。我试过:
{'postcode': {'dependencies': {'is_realty_address': False}, 'required': True}}
如果邮政编码没有出现在文档中,无论 is_realty_address 的值是什么,都会返回错误
v = Validator()
print(v.validate({'is_realty_address': False}, schema))
print(v.errors)
print(v.validate({'is_realty_address': True}, schema))
print(v.errors)
此代码返回:
False
{'postcode': ['required field']}
False
{'postcode': ['required field']}
我还尝试实现验证方法:
def _validate_conditional_required(self, conditional_required, field, value):
"""
:param conditional_required:
:param field:
:param value:
:return:
The rule's arguments are validated against this schema:
{'type': 'dict'}
"""
for conditional_field, conditional_value in conditional_required.items():
if self.document[conditional_field] == conditional_value and field not in self.document:
self._error(field, errors.REQUIRED_FIELD)
有架构
schema = {
'is_realty_address': {'required': True, 'type': 'boolean'},
'postcode': {'conditional_required': {'is_realty_address': False}},
}
但如果“邮政编码”不在文档中,则此规则不会运行。
有什么方法可以设置“条件要求”规则吗?我想看这段代码:
schema = {
'is_realty_address': {'required': True, 'type': 'boolean'},
'postcode': {'conditional_required': {'is_realty_address': False}},
}
v = Validator()
print(v.validate({'is_realty_address': False}, schema))
print(v.errors)
print(v.validate({'is_realty_address': True}, schema))
print(v.errors)
返回:
True
False
{'postcode': ['required field']}
最佳答案
我想通了,我的问题可以通过结合“排除”和“一个”规则来解决
schema = {
'is_realty_address': {
'required': True, 'type': 'boolean',
'oneof': [{'excludes': 'postcode', 'allowed': [False]}, {'allowed': [True]}]
},
'postcode': {'type': 'integer', 'required': True}}
v = Validator()
print(v.validate({'is_realty_address': True}, schema))
print(v.errors)
print(v.validate({'is_realty_address': False, 'postcode': 111111}, schema))
print(v.errors)
此代码返回:
False
{'postcode': ['required field']}
False
{'is_realty_address': [{'oneof': ['none or more than one rule validate', {'oneof definition 1': ['unallowed value False'], 'oneof definition 0': ["'postcode' must not be present with 'is_realty_address'"]}]}]}
因此,模式不会因该变体而变得非常复杂。
关于python - 如何使 cerberus 所需规则取决于条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48789686/
我真的很喜欢 Cerberus,但我无法在文档中找到一个简单的案例。我想要 fudge 类型,它是一个带有 ~ 前缀的字符串。我根本不知道该怎么做.. fudge_type = cerberus.Ty
我正在使用 cerberus 来验证数据。我的一个字段是可选的 - 不需要每一项都存在。但是,该键必须在整个数据数组中至少填充一次。 举个例子,假设我想验证键 'c' 出现在我的数据列表中的至少一个字
考虑以下架构 schema = { "value_type":{ "type": "string", "required": True }, "units":
我使用的是 Cerberus 版本 1.1。 Cerberus required 验证规则似乎默认为 False,结果是空文档完全有效。 >>> schema = { 'spam': {'ty
我想使用 Cerberus 来验证某个字段不存在于对象中。 我想使用类似的东西: my_schema = { 'normal_field': { 'type': 'string
我正在尝试为具有引用文档中较高字段的依赖项的文档创建架构。例如: document = { 'packages': { 'some-package': {'version':
来自documentation ,我不清楚自定义规则和自定义验证器在用例中的区别是什么。在文档中给出的示例中,唯一的区别是额外的 if 语句检查自定义规则中 is_odd 的值。我什么时候应该更喜欢自
我有一个以 ID 作为根键的字典,我想验证它。换句话说,我想要验证的字典的根键是动态的。有没有办法针对根 key 运行 key 架构? 例如https://repl.it/@crunk1/cerber
考虑以下 Cerberus 架构: { 'employee': { 'type': 'list', 'schema': { 'type': 'dict',
有没有办法拥有 Cerberus验证两个字段是否具有相同数量的元素? 例如,该文档将验证: {'a': [1, 2, 3], b: [4, 5, 6]} 这不会: {'a': [1, 2, 3], '
正在使用 Cerberus 验证 CSV 文件但我正在努力解决我认为的一些基本逻辑 场景: CSV 文件有 2 列。仅当Column 1 有值时,Column 2 才需要有值。如果第 1 列 为空,则
我知道根据 Cerberus documentation ,可以根据其他键值定义验证依赖项,例如: schema = {'field1': {'required': False},
我正在使用开源 Python 数据验证库 Cerberus验证字典的结构。我希望它获取部分无效的文档并在没有无效键的情况下输出它。 例如,对于这个脚本: from cerberus import Va
我正在使用 python 库 cerberus ( http://docs.python-cerberus.org/en/stable/ ),我想检查 JSON 字段是数字(整数)还是空字符串。 我尝
我有以下架构: schema = { 'person': { 'name': {'type': 'string', 'required': True, 'minlength':
我想本地化 Cerberus 返回的错误消息,例如我想实现以下目标: >>> validator.schema = {'animal': {'forbidden': ['Einhorn']}} >>>
我有一个很大的 json 文档,如果其他字段具有精确值,则应该需要其中一些字段。例如 document = {'is_realty_address': False, 'postcode': 11111
我试图将字符串强制为日期,以便它可以验证日期数据类型,但它仍然返回False: from cerberus import Validator from datetime import datetime
有没有办法告诉 cerberus 将模式中的所有键的 required 默认设置为 True?这会节省我一些时间,因为大多数时候我想断言 key 的存在。 最佳答案 我认为这个问题没有通用的解决方案,
正在验证 .csv 文件,我想以用户习惯的格式给出验证结果。要利用Cerberus ,我让用户在 .yaml 文件中定义验证规则。 schema.yaml Rules: Rule1: maxle
我是一名优秀的程序员,十分优秀!