如果缺少密钥,如何使用 ceberus 发出警告?

How can I produce a warning with ceberus if a key is missing?

Cerberus 允许 required 字段,但我想要 "preferred" class 字段,以便在缺少字段时记录警告消息。我有一些看起来不太好的想法如下:

  1. 我可以用 custom rule, but these are called with field and value arguments, making me suspect that this function would be called on missing fields. __validate_required_fields 扩展验证器,在文档上调用它来生成丢失的文件会更理想,但我不确定如何将其挂钩。

  2. Cerberus 提供了一个 check_with 选项,但同样,我不确定是否会在缺少的字段上调用它。

  3. 我可以尝试根据需要标记这些并在错误处理程序中进行跟踪。这并不理想,因为如果缺少 "preferred" 个字段,验证不应失败。

  1. 您的怀疑是正确的,不在文档中的字段未完全验证。并且 __validate_required_fields 未被指定为被覆盖(由于两个前导 __,名称修饰将失败)。

  2. 和1不一样

  3. 最好通过覆盖 validate 方法和 post 处理各种(!)错误容器来完成。

我认为最简单的解决方案是针对两种不同的模式进行验证,一种是检查困难,另一种是您从中收到警告。