Зефир @validates не вызывает ошибку - PullRequest
0 голосов
/ 07 сентября 2018

все. Я пишу проект API с использованием Flask в качестве основного фреймворка и пакета Marshmallow для сериализации данных JSON. Я хочу создать экземпляр игрока, но перед созданием проверьте его никнейм. Вид:

def create_player()
    ...
    try:
        data = player_schema.load(request_data)
        # when error raised excect case does not handle it
        # but data has 2 dicts: 
        # UnmarshalResult(data={}, errors={'nickname': ['Error!!!']})
    except ValidationError as err:
       return jsonify(err.messages), 400
    ...

Схема:

class PlayerSchema(Schema):

    nickname = fields.Str(required=True)
...

    @validates('nickname')
    def validate_nickname(self, value):
        raise ValidationError('Error!!!')

1 Ответ

0 голосов
/ 19 октября 2018

Это потому, что по умолчанию в зефире 2 схемы не возникают при ошибке.

Вам нужно передать strict мета-аргумент:

class PlayerSchema(Schema):

    nickname = fields.Str(required=True)

    class Meta:
        strict = True

В зефире 3 (бета-версия на сегодняшний день, надеюсь, скоро будет выпущена) схемы всегда возникают при ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...