Python цербер имеет правило проверки под названием мета, где я назначаю dict мета-правилу. Как я должен получить к нему доступ? Я пишу собственный error_handler, используя это для настройки сообщений об ошибках.
Моя цель schema = {'a': {'type': 'integer', 'meta': {'label': 'Age'}}}
и хотел бы использовать метку в своем сообщении об ошибке.
Любая помощь будет оценена по достоинству.
@yugantar, ты нашел способ получить доступ к label
в своих сообщениях об ошибках? У меня похожая ситуация, как в этот вопрос, и я не могу понять, как это сделать.
Привет @lukik, я ответил на свой вопрос, а также добавил ответ на ваш вопрос о том, как я обошел этот вариант использования.
Отвечая на мой собственный вопрос.
Я создал собственный error_handler, чтобы добавить метку к моим сообщениям об ошибках.
from cerberus.errors import BasicErrorHandler
class CustomErrorHandler(BasicErrorHandler):
def __init__(self, schema):
self.custom_defined_schema = schema
def _format_message(self, field, error):
return self.custom_defined_schema[field].get('meta', {}).get('label', field) + ': ' + super(CustomErrorHandler, self)._format_message(field, error)
val = Validator(schema, error_handler=CustomErrorHandler(schema))
Надеюсь, это поможет будущим пользователям.
у меня нет времени на подробный ответ, но если вы хотите получить доступ к свойству
schema
валидатора из обработчика ошибок, вам придется сначала привязать валидатор к некоторому свойству обработчика. вероятно, в_format_message
вы можете разрешить правилоmeta
в схеме сerror.schema_path
.