gpt4 book ai didi

flask - 在flask restful/plus 中使用可变键编码字典

转载 作者:行者123 更新时间:2023-12-02 11:22:10 25 4
gpt4 key购买 nike

我正在使用flask-restful 构建一个API。我还使用flask-resfulplus 来生成swagger 文档。我想返回一个项目字典,其中键将根据项目而变化。我的模型看起来像这样:

item = api.model('Item',{
'item':fields.Integer()}) <- This is wrong


ItemModel = api.model('ItemsList', {
'_header': fields.Nested(_header),
'items':fields.Nested(item)
})

请注意,我尝试了一些变体,但似乎没有任何效果;这只是最新的互动。

我正在寻找的回应是这样的。
{
'_header':{} <-This works fine
'items': {
'item1':5,
'item2':2
}
}

项目字典中的项目将具有不同的项目键和作为值的计数。

我已经尝试将 item 字段设置为 field.Raw() 并且它工作正常,但是它没有显示在 swagger 文档中。

请注意,我不想返回我正在使用的字典列表。

谢谢

最佳答案

有时您有自己的自定义格式需求。您可以继承 fields.Raw 类并实现格式功能。当一个属性存储多条信息时,这尤其有用。例如一个位域,其各个位代表不同的值。您可以使用字段将单个属性多路复用到多个输出值。

如果您不知道要解码的字段的名称,则可以使用通配符。

>>> from flask_restplus import fields, marshal
>>> import json
>>>
>>> wild = fields.Wildcard(fields.String)
>>> wildcard_fields = {'*': wild}
>>> data = {'John': 12, 'bob': 42, 'Jane': '68'}
>>> json.dumps(marshal(data, wildcard_fields))
>>> '{"Jane": "68", "bob": "42", "John": "12"}'

您为通配符指定的名称充当真正的 glob,如下所示。
>>> from flask_restplus import fields, marshal
>>> import json
>>>
>>> wild = fields.Wildcard(fields.String)
>>> wildcard_fields = {'j*': wild}
>>> data = {'John': 12, 'bob': 42, 'Jane': '68'}
>>> json.dumps(marshal(data, wildcard_fields))
>>> '{"Jane": "68", "John": "12"}'


备注
在模型之外定义通配符很重要 (即,您不能像这样使用它: res_fields = {'': fields.Wildcard(fields.String)})* 因为它必须是有状态的以跟踪它已经处理过的字段。

关于flask - 在flask restful/plus 中使用可变键编码字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34797403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com