我们正在进行一系列API调用,在进行API调用之前,需要根据基于棉花糖(3.7.0)的模式验证传递的数据。大多数架构定义的格式如下:
class SomeSchema(Schema):
Field1 = fields.Str(default='')
Field2 = fields.Str(default='', missing='', allow_none=True)
Field3 = fields.Int()
etc
但是,我们有一个小的例外,API调用只需要一个未命名的字符串列表,比如:
["abc", "def", "ghi", ...]
为了保持验证输入前后的一致性,我希望继续使用marhmallow,即使是在这个简单的情况下。我认为这样一个简单的模式是可行的:
class MySimpleSchema(Schema):
fields.List(fields.Str(default=''))
但是,在运行以下代码时,我会出现以下错误:
my_schema = MySimpleSchema()
my_simple_list = ["item1","item1","item1"]
data = my_schema.load(my_simple_list)
validation error: {'_schema': ['Invalid input type.']}
欢迎提出任何意见
加载时,即反序列化对象时,Marshmallow的} 的情况下,包含字典的字符串)
load
方法expects a dictionary(或者在^{因此,需要进行几项更改:
load
,例如:在您的例子中,如果您确实想使用棉花糖进行验证,可以首先将未命名的字符串列表包装到字典中(请注意,键必须与模式中定义的字段相匹配)。因此,类似这样的方法会起作用:
此外,如果您只想验证输入数据而不进行反序列化,可以使用
Schema.validate()
:输出:
相关问题 更多 >
编程相关推荐