2015-12-10 1 views
4

Si je Guimauve pour créer un schéma comme celui-ci:Marshmallow ne donnant pas des erreurs

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) 

puis-je faire quelque chose comme:

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

J'attends une erreur mais je reçois:

Pourquoi ce message ou toute autre chose ne s'affiche-t-il pas en tant qu'erreur?
MarshalResult(data='{"email": "123"}', errors={}) 

Répondre

7

La validation se produit uniquement lors de la désérialisation (à l'aide de Schema.load) et non lors de la sérialisation (Schema.dump).

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

Si vous n'avez pas besoin des données désérialisés, vous pouvez utiliser Schema.validate.

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