问题
I want to localize the error messages Cerberus returns, e.g. I'd like to achieve the following:
>>> validator.schema = {'animal': {'forbidden': ['Einhorn']}}
>>> validator({'animal': 'Einhorn'})
False
>>> validator.errors
{'animal': ['VERBOTEN!']} # instead of 'unallowed value Einhorn'
回答1:
You can simply subclass the default error handler BasicErrorhandler
from the cerberus.errors
module and adjust the message templates as you like:
>>> 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!']}
Have a look at the source code for available error codes and template variables.
来源:https://stackoverflow.com/questions/47730454/how-can-i-customize-error-messages-of-cerberus