2015-12-10 3 views
4

Если бы я использовал Зефир, чтобы создать схему, как это:Зефир не дает ошибки

class TempSchema(Schema): 
    id = fields.Int() 
    email = fields.Str(required=True, 
        validate=validate.Email(error='Not a valid email address')) 
    password = fields.Str(required=True, 
         validate=[validate.Length(min=6, max=36)], 
         load_only=True) 

, а затем я сделать что-то вроде:

temp = TempSchema() 
temp.dumps({'email':123}) 

Я бы ожидать ошибку, но я получаю:

MarshalResult(data='{"email": "123"}', errors={}) 

Почему это или что-то еще не отображается как ошибка?

ответ

7

Валидация происходит только при десериализации (с использованием Schema.load), а не сериализации (Schema.dump).

data, errors = schema.load({'email': '123'}) 
print(errors) 
# {'email': ['Not a valid email address'], 'password': ['Missing data for required field.']} 

Если вам не нужны десериализованные данные, вы можете использовать Schema.validate.

errors = schema.validate({'email': '123'}) 
print(errors) 
# {'email': ['Not a valid email address'], 'password': ['Missing data for required field.']} 
Смежные вопросы