如何自定义 Cerberus 的错误消息?

2024-03-24

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

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

您可以简单地子类化默认错误处理程序BasicErrorhandler来自cerberus.errors模块并根据需要调整消息模板:

>>> 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!']}

看看源代码 https://github.com/pyeve/cerberus/blob/master/cerberus/errors.py了解可用的错误代码和模板变量。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何自定义 Cerberus 的错误消息? 的相关文章

随机推荐