Доступ к правилу проверки Cerberus META

Python цербер имеет правило проверки под названием мета, где я назначаю dict мета-правилу. Как я должен получить к нему доступ? Я пишу собственный error_handler, используя это для настройки сообщений об ошибках.

Моя цель schema = {'a': {'type': 'integer', 'meta': {'label': 'Age'}}} и хотел бы использовать метку в своем сообщении об ошибке.

Любая помощь будет оценена по достоинству.

у меня нет времени на подробный ответ, но если вы хотите получить доступ к свойству schema валидатора из обработчика ошибок, вам придется сначала привязать валидатор к некоторому свойству обработчика. вероятно, в _format_message вы можете разрешить правило meta в схеме с error.schema_path.

funky-future 24.06.2019 12:02

@yugantar, ты нашел способ получить доступ к label в своих сообщениях об ошибках? У меня похожая ситуация, как в этот вопрос, и я не могу понять, как это сделать.

lukik 08.07.2019 21:38

Привет @lukik, я ответил на свой вопрос, а также добавил ответ на ваш вопрос о том, как я обошел этот вариант использования.

yugantar 09.07.2019 12:11
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
3
411
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Отвечая на мой собственный вопрос.

Я создал собственный 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))

Надеюсь, это поможет будущим пользователям.

Другие вопросы по теме