python - 如何自定义 Cerberus 的错误信息?

标签 python cerberus

我想本地化 Cerberus 返回的错误消息,例如我想实现以下目标:

>>> validator.schema = {'animal': {'forbidden': ['Einhorn']}}
>>> validator({'animal': 'Einhorn'})
False
>>> validator.errors
{'animal': ['VERBOTEN!']}  # instead of 'unallowed value Einhorn'

最佳答案

您可以简单地从 cerberus.errors 模块继承默认错误处理程序 BasicErrorhandler 并根据需要调整消息模板:

>>> class CustomErrorHandler(errors.BasicErrorHandler):
...     messages = errors.BasicErrorHandler.messages.copy()
...     messages[errors.FORBIDDEN_VALUE.code] = 'VERBOTEN!'
...     
>>> validator = Validator(schema, error_handler=CustomErrorHandler)
>>> validator({'animal': 'Einhorn'})
False
>>> validator.errors
{'animal': ['VERBOTEN!']}

看看 source code获取可用的错误代码和模板变量。

关于python - 如何自定义 Cerberus 的错误信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47730454/

相关文章:

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

python - if/else/if 可能在列表理解中吗?

python - 模型输入必须来自 `tf.keras.Input` ...,它们不能是前一个非输入层的输出

python - Django 从浏览器发布 URL

python - 在 Eve 中修补到具有 'valueschema' 且类型为 'dict' 的字段时,无法序列化数据

python - cerberus:禁止现场存在

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

python - 即使通过代理的连接失败,如何重试当前循环

python - 脚本的相对 Python 路径