问题标签 [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.

0 投票
2 回答
2580 浏览

python - 地狱犬。至少应该存在两个键之一是 json

我正在使用Cerberus验证作为 JSON 发布到基于 Flask 的 ReST-API 的数据。我想要两个字段中的至少一个freight_idtender_id在场。

这些映射将被视为有效:

虽然这个不会:

如何使用 Cerberus 为此类验证制定模式?

我几乎阅读了所有文档,但没有找到任何答案。-ruleexcludes不符合我的需要。

0 投票
1 回答
5966 浏览

python - Python - Cerberus、jsonschema、voluptous - 哪一个合适?

我正在用 python 开发一个小型 RESTful Web 应用程序并使用 JSON 作为接口。应用程序接受 JSON 数据并需要根据模式验证它们。根据请求,模式可能非常严格或灵活。此外,应用程序可能需要在以后的改进中验证用户对象。

我在堆栈溢出以及其他网站上发现了一些建议。这些包括

但找不到合适的比较。

在简单性、灵活性和可扩展性方面,您认为我应该选择哪一个?

从他们的文档和示例来看,Cerberus 似乎非常灵活,扩展能力似乎非常好。但我不知道其他图书馆。

编辑 1:现在应用程序的需求非常简单,基本模式验证具有添加自定义类型和自定义验证规则的范围就足够了。因此,如果所有这些库都提供基本要求,我会选择最简单易用的库。如果有其他建议,我也愿意接受。

希望能得到一些帮助。

0 投票
1 回答
546 浏览

python - 使用 Cerberus 进行 SQLAlchemy 整个模型验证

我想为使用 cerberus 的所有模型创建一些通用验证机制。目标是在模型的__schema__属性中拥有 cerberus 模式,并在每次模型状态发生变化时(不一定在插入或更新之前)使用此模式对整个模型进行验证。我考虑过使用事件,但我不知道该怎么做,不要错过任何东西。

0 投票
0 回答
135 浏览

python - 我可以在 Cerberus 中禁用自定义验证规则吗?

我有一些自定义验证规则,用于在 Cerberus 中进行一些复杂的验证(遵循http://docs.python-cerberus.org/en/stable/customize.html)。

它们工作正常,但偶尔在测试或处理我知道是正确的文件时,我想跳过这些额外的规则以节省时间(有些涉及网络查找等)。

有内置或推荐的方法吗?

背景:我最初尝试_skip_validation使用成员函数添加成员属性disable_validation()并将enable_validation()其设置为Trueor False。然后,在我的_validate_isvalid...函数中,我有一个if关于该属性的声明。但是,验证器的子节点似乎不保留此属性,因此验证器仅跳过顶级键的这些规则。

0 投票
1 回答
418 浏览

python - Cerberus:错误对象中的多余嵌套

我使用cerberus来验证我的数据,例如:

我使用这样的方案:

当我得到一个错误对象时,它有太多的嵌套:Cerberus 为每个嵌套级别创建一个列表:

我可以得到类似的东西:

0 投票
1 回答
1514 浏览

python - 使用 Cerberus 验证两个参数是否具有相同数量的元素

有没有办法让Cerberus验证两个字段具有相同数量的元素?

例如,本文档将验证:

这不会:

到目前为止,我已经提出了这个架构:

但是没有规则可以测试两个字段的长度相等。

0 投票
1 回答
393 浏览

validation - 在 cerberus 中默认设置为 True

有没有办法告诉 cerberus默认设置为模式中的所有键requiredTrue这会节省我一些时间,因为大多数情况下我想断言密钥的存在。

0 投票
1 回答
618 浏览

python - python eve中子对象中“datetime”的奇怪验证行为

在测试我的 python eve API 时,我看到了一些非常奇怪的验证行为。

  • 夏娃 0.7.4
  • 蒙哥 v3.2.10

简化摘要:我有一个域端点test,其架构包含一个对象,该对象props具有两个子属性timewetBulb

当我定义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'

0 投票
2 回答
2759 浏览

python - Cerberus 接受有效的空值

试图使此验证可接受 True,其中任何字段都可以是empty: True(默认我知道),但当不为空时,必须应用所有顺序条件。

架构v = Validator()

邮政val = v.validate(p, schema)

回复

希望我不会太困惑。

编辑1:按照规范化规则“默认”中提到的那样尝试了这个:

邮政:

但似乎我仍然缺少一些东西来让它为整数工作

0 投票
1 回答
846 浏览

python - 如何根据 Cerberus 中另一个字段的值根据模式验证字段?

我正在使用 Cerberus 来验证具有 atype和 adata字段的有效负载。根据type(testbuild) 的值,我想data针对不同的约束进行验证。

到目前为止,我有这个设置:

但是当预期的子模式失败时,也会报告关于另一个的错误:

definition 1当兄弟姐妹type具有价值时,有没有办法有条件地使用build

这个问题源于这个问题