如果我使用Marshmallow来创建这样的模式:
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={})
为什么这个或其他什么不显示为错误?
验证仅在反序列化(使用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.']}