Ubf*_*_10 5 python python-3.x marshmallow
我尝试在python 3.7上使用marshmallow 2.18.0来验证数据。我等待 json并使用架构加载它:{'name': 'foo', 'emailAddress': 'x@x.org'}
class FooLoad(Schema):
name = fields.Str()
email = fields.Email(data_key='emailAddress', required=True)
Run Code Online (Sandbox Code Playgroud)
我除了加载时的data_key会返回一些类似的信息,但我在错误字段中收到错误:{'name': 'foo', 'email': 'x@x.org'}
schema_load = FooLoad()
after_load = schema_load.load({'name': 'foo', 'emailAddress': 'x@x.org'})
after_load.errors # return {'email': ['Missing data for required field.']}
Run Code Online (Sandbox Code Playgroud)
但根据Marshmallow 文档与devDependency或 github问题的示例 after_load必须包含类似{'name': 'foo', 'email': 'x@x.org'}
.
我想反序列化传入的日期,其名称与架构属性名称不同(指定 date_key 所需的内容),但尝试时出现错误。我如何使用与架构属性不同的名称反序列化输入数据并在此属性的 data_key 字段中声明?
data_key
在棉花糖3中引入。
请参阅变更日志条目:
向后不兼容:
data_key
向字段添加参数以指定输入和输出数据字典中的键。该参数取代了load_from
anddump_to
(#717)。
以及相关的拉取请求。
使用 marshmallow 2 时,必须使用load_from
/ dump_to
:
class FooLoad(Schema):
name = fields.Str()
email = fields.Email(load_from='emailAddress', dump_to='emailAddress', required=True)
Run Code Online (Sandbox Code Playgroud)
您正在使用 Marshmallow 2,但正在阅读 Marshmallow 3 的文档。
请注意,marshmallow 3 包含大量改进,并且处于 RC 状态,因此如果您正在启动一个项目,您可以选择 marshmallow 3 并为自己节省一些将来的过渡工作。