问题标签 [cerberus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Python - Cerberus、jsonschema、voluptous - 哪一个合适?
我正在用 python 开发一个小型 RESTful Web 应用程序并使用 JSON 作为接口。应用程序接受 JSON 数据并需要根据模式验证它们。根据请求,模式可能非常严格或灵活。此外,应用程序可能需要在以后的改进中验证用户对象。
我在堆栈溢出以及其他网站上发现了一些建议。这些包括
但找不到合适的比较。
在简单性、灵活性和可扩展性方面,您认为我应该选择哪一个?
从他们的文档和示例来看,Cerberus 似乎非常灵活,扩展能力似乎非常好。但我不知道其他图书馆。
编辑 1:现在应用程序的需求非常简单,基本模式验证具有添加自定义类型和自定义验证规则的范围就足够了。因此,如果所有这些库都提供基本要求,我会选择最简单易用的库。如果有其他建议,我也愿意接受。
希望能得到一些帮助。
python - 使用 Cerberus 进行 SQLAlchemy 整个模型验证
我想为使用 cerberus 的所有模型创建一些通用验证机制。目标是在模型的__schema__
属性中拥有 cerberus 模式,并在每次模型状态发生变化时(不一定在插入或更新之前)使用此模式对整个模型进行验证。我考虑过使用事件,但我不知道该怎么做,不要错过任何东西。
python - 我可以在 Cerberus 中禁用自定义验证规则吗?
我有一些自定义验证规则,用于在 Cerberus 中进行一些复杂的验证(遵循http://docs.python-cerberus.org/en/stable/customize.html)。
它们工作正常,但偶尔在测试或处理我知道是正确的文件时,我想跳过这些额外的规则以节省时间(有些涉及网络查找等)。
有内置或推荐的方法吗?
背景:我最初尝试_skip_validation
使用成员函数添加成员属性disable_validation()
并将enable_validation()
其设置为True
or False
。然后,在我的_validate_isvalid...
函数中,我有一个if
关于该属性的声明。但是,验证器的子节点似乎不保留此属性,因此验证器仅跳过顶级键的这些规则。
validation - 在 cerberus 中默认设置为 True
有没有办法告诉 cerberus默认设置为模式中的所有键required
?True
这会节省我一些时间,因为大多数情况下我想断言密钥的存在。
python - python eve中子对象中“datetime”的奇怪验证行为
在测试我的 python eve API 时,我看到了一些非常奇怪的验证行为。
- 夏娃 0.7.4
- 蒙哥 v3.2.10
简化摘要:我有一个域端点test
,其架构包含一个对象,该对象props
具有两个子属性time
和wetBulb
当我定义wetBulb
为驼峰式键(即wetBulb
代替wet_bulb
)和/或将其定义为两种潜在类型之一(即'type': ['string', 'float']
)时,eve/cerberus 无法将我的time
值解释为datetime
.
例子:
使用所有其他默认值在本地运行,我使用requests
库测试此 API 点:
我得到了回应
如果我将架构定义更改为具有密钥wet_bulb
和/或我将其类型更改为'type': 'string'
它将正确验证:
然后使用更新的对象发布对象:
问题:
有没有人看到过类似的其他行为,或者可以帮助澄清什么可能控制了这种验证行为?我已经四处探索,试图定义导致验证但没有成功的原因。
编辑
我相信部分解释type
在 cerberus 文档下面的两个注释中,但我仍然没有弄清楚原因:
http://docs.python-cerberus.org/en/stable/validation-rules.html#type
我datetime
在不同的架构中遇到相同的验证问题。在这种情况下,我通过删除'type'
声明或设置'type'
为字符串而不是列表(即'type': 'number'
代替'type': ['number', 'list']
.'type'
python - Cerberus 接受有效的空值
试图使此验证可接受 True
,其中任何字段都可以是empty: True
(默认我知道),但当不为空时,必须应用所有顺序条件。
架构v = Validator()
邮政val = v.validate(p, schema)
回复
希望我不会太困惑。
编辑1:按照规范化规则“默认”中提到的那样尝试了这个:
邮政:
但似乎我仍然缺少一些东西来让它为整数工作
python - 如何根据 Cerberus 中另一个字段的值根据模式验证字段?
我正在使用 Cerberus 来验证具有 atype
和 adata
字段的有效负载。根据type
(test
或build
) 的值,我想data
针对不同的约束进行验证。
到目前为止,我有这个设置:
但是当预期的子模式失败时,也会报告关于另一个的错误:
definition 1
当兄弟姐妹type
具有价值时,有没有办法有条件地使用build
?
这个问题源于这个问题。