问题标签 [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:如果 len(value) == 1,则 Cerberus 值强制
使用该cerberus
库进行验证,我想知道自定义规则如何检查输入是否是只有一个元素的列表。如果是这种情况,则应将值更改为单个值(值强制)。
这是我的尝试,它不起作用。
输出是{'amount': [10]}
。
但是,它应该阅读{'amount': 10}
python - 允许给定模式之一
我正在使用 Cerberus 来验证一些看起来像这样的 YAML 文件:
fleet.yml
一般结构是有一些文件范围的值,例如fleet_city
,然后是一个名为vehicles
. 后者是以车辆名称为键的字典。每种车辆类型都有自己的模式,尽管它们都是字典。我想出了这个模式来正式化这个:
schema.yml
我可以测试:
哪个正确返回True
。然而,在输入中,每辆车都应该有一种类型(一个car
街区或一个boat
街区,而不是两者)。此规则未反映在上述架构中。我试着像这样添加它:
schema2.yml
据我所知,我遵循了文档中给出的语法,但schema2.yml
原因是:
这真的没有帮助。
一种解决方法是使用excludes
for car
in boat
,反之亦然,但如果我们不仅有 2 种车辆类型,而且有很多车辆类型,那么这种方法就会失败。
我的问题是什么,我schema2.yml
该如何解决?
python - Python:cerberus check_with 函数
我想验证 a dict
,其中的值符合以下规则:
- 值必须是单个
float
或List(float)
- 如果是 single
float
,则值必须为 1 - 如果是 a
List(float)
,每个浮点数必须是正数
这是我的代码和一些测试断言,它们工作正常:
现在,我必须再实现一个条件:
- 如果是 a
List(float)
,则sum
offloat
必须等于 1
因此,我编写了文档( https://docs.python-cerberus.org/en/stable/validation-rules.html) check_with
中描述的函数。
调整后的架构和测试文档如下所示:
现在,只要值是 a List(float)
,只有第一个元素list
会被注入我的函数,导致 a TypeError: 'float' object is not iterable
。
验证时document4
,field
将是int=0
和value=0.5
。所以错误信息是有道理的。
我想知道,为什么整个列表没有传递给我的函数?我在这里想念什么?
python-3.x - 使用 cerberus 正则表达式验证字符串以模式结尾
cerberus库表示它允许进行正则表达式验证,但这似乎不适用于各种情况,而且文档很少。在尝试验证字符串是否以“.csv”结尾的情况下,验证总是失败,即使在搜索文件名本身的部分时也是如此。我认为cerberus在后端对传入的正则表达式做了一些事情。
python-3.x - 是否可以在 cerberus、Python 中设置条件验证?
我使用 Python 包cerberus来验证我的有效负载这是我的问题:
仅当来自另一个模式的某些字段具有精确值时,我才需要设置一个字段。就像是:
所以我的架构应该是这样的:
有人知道方法,如何实现吗?谢谢
python - 如果缺少密钥,如何使用 ceberus 发出警告?
Cerberus 允许必填字段,但我希望有一个“首选”字段类,以便在它们丢失时记录警告消息。我有一些看起来不太好的想法如下:
我可以使用自定义规则扩展验证器,但是这些是用
field
和value
参数调用的,这让我怀疑这个函数会在缺少的字段上调用。__validate_required_fields在文档上调用以生成丢失的文件会更理想,但我不确定如何将其挂钩。Cerberus 提供了一个check_with选项,但我不确定是否会在缺少的字段上调用它。
我可以尝试根据需要标记这些并在错误处理程序中进行跟踪。这并不理想,因为如果缺少“首选”字段,验证不会失败。
python - 使用 cerberus coercers 加密/解密数据
我打算使用 python eve & cerberus 将一些文档保存到 mongodb 数据库中。其中一些文档将包含一些我确实想加密存储的敏感数据(伪密码)。
我认为 cerberus custom coercers 是解决此问题的完美方法。但是,我不确定如何使 cerberus 持久加密数据,并将其带回解密。
我一直在寻找文档,但我不知道是否可以指定我何时想要“加密”或“解密”
我想要类似的东西:
附加数据
重要的是,调用此强制器不会添加额外的规范化,例如添加默认值。我只想加密字段,但让文档的其余部分保持原样
有可能做这样的事情吗?我怎么能用这个参数调用这种强制器?
python - Cerberus 两把钥匙之一
我有一组用于验证我的输入路由的模式:
但我需要定义一个email_address
或者mobile_number
是必需的,但不是两者都需要。如何只需要这两个键中的一个?
python - 使用 Cerberus 验证具有严格模式的任意 dict 键
我正在尝试验证 JSON,其模式指定具有任意字符串键的 dicts 列表,其对应的值是具有严格模式的 dicts(即,内部 dict 的键严格是一些字符串,这里是 'a' )。从 Cerberus 文档中,我认为我想要的是“keysrules”规则。文档中的示例似乎只显示了如何使用“keysrules”来验证任意键,而不是它们的值。我写了下面的代码作为例子;我能做的最好的就是假设“keysrules”将支持“模式”参数来定义这些值的模式。
这个例子确实验证了,我希望它不在'shouldNotValidate'上验证,因为那个键应该是'a'。'keysrules' 所暗示的灵活性(即,由'keysrules' 管理的键除了{'type': 'string'} 之外没有其他约束)递归地向下传播到它下面的所有模式?还是我犯了一些不同的错误?我怎样才能达到我想要的结果?