python - 即使验证失败,Marshmallow 序列化错误也为空

标签 python marshmallow

我正在添加marshmallow到我的 Python Web 服务,主要是为了我可以使用模式生成 OpenAPI 文档,但我也希望对我的 API 响应序列化进行错误检查。我已经阅读了相关文档,但我不明白为什么当我序列化不完整的对象时没有看到错误。

例如,具有以下架构:

class UserResponse(Schema):
    user = fields.Integer(required=True)
    email = fields.Email(required=True)
    name = fields.String(required=True)
    role = fields.String(required=True)

    class Meta:
        strict = True

schema = UserResponse()

验证按预期进行:

>>> schema.validate({'user': 1})
ValidationError: {'email': ['Missing data for required field.'], 'role': ['Missing data for required field.'], 'name': ['Missing data for required field.']}

但是序列化返回一个空的错误列表:

>>> schema.dump({'user':1})
MarshalResult(data={'user': 1}, errors={})

这是应该如何工作的吗?如果序列化对象缺少必需字段,我希望返回错误。

最佳答案

根据设计,在 Marshmallow 中,验证仅在反序列化时执行。

参见this issue .

关于python - 即使验证失败,Marshmallow 序列化错误也为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54829014/

相关文章:

python - 为什么Flask读取大文本文件不占内存?

python - 使用 Peewee 和 Marshmallow 序列化多对多关系

python - 如何在Python中比较sql和json

python - tkinter - 将 for 循环中的按钮链接到函数字典 {name : function}

python - 更改箭袋的轴刻度 - Python

python - if vs. else if vs. else 语句?

list - 如何检查以下所有项目是否都在列表中?

python - 验证 Marshmallow 中的字段但不反序列化它

python - 反序列化多对多 PUT 操作的 id 列表

python-3.x - 属性错误 : 'dict' object has no attribute '_sa_instance_state'