Python Marshmallow не обнаруживает ошибку в обязательном поле

Я использую зефир для проверки данных API. Но он не работает для обязательного поля.

Следующий код работает для проверки длины.

password = fields.String(validate = validate.Length(min=6))

Но обязательное поле не работает. Он просто игнорирует и продолжает, не показывая при этом никаких ошибок.

password = fields.String(required = True) //not working

person Lama Madan    schedule 24.01.2019    source источник
comment
Нам нужно больше контекста. Что вы сделали для проверки данных API?   -  person Chien Nguyen    schedule 24.01.2019
comment
Я создал класс схемы, используя зефир и используя схему для проверки. У меня есть данные в request.form, и я использую схему с загрузкой ( schema.load(request.form).errors), где схема является объектом моего класса схемы.   -  person Lama Madan    schedule 24.01.2019
comment
Какую версию зефира вы используете? Это может быть актуально в зависимости от версии, github.com/marshmallow-code/marshmallow/issues. /377   -  person J.J. Hakala    schedule 26.01.2019


Ответы (1)


Пожалуйста, проверьте этот пример:

from marshmallow import Schema, fields

class User(Schema):
    email = fields.Str()
    password = fields.Str(required=True)


User().load({'email': '[email protected]'}) # raise Exception
User().load({'email': '[email protected]', 'password': ''}) # Not raise exception

Ваш request.form всегда содержит поле password, но оно будет пустым.

person Chien Nguyen    schedule 24.01.2019
comment
поэтому он обнаружит пустое значение как заданное, поэтому не вызовет ошибки, и мы должны проверить наличие пустых данных? - person Lama Madan; 24.01.2019
comment
Да, мы должны проверить наличие пустых данных. Проверьте это: marshmallow.readthedocs.io/en/3.0 / - person Chien Nguyen; 24.01.2019