棉花糖不报错
Marshmallow not giving errors
如果我使用 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.']}
如果我使用 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.']}