Flask Restful 接受 post 请求中的列表

Flask Restful accept a list in a post request

我正在为我的服务器使用 Flask Restful API 并向服务器发布一个字典,其中一个值是字典的列表。

parser.add_argument('products_in_basket', type=list)
def post(self, user_id):
   args = parser.parse_args()
   print request.data
   print args['my_list']

我遇到的问题是 args['my_list'] 只返回列表的第一个元素。而我可以看到来自 request.data.

的所有列表

这是request.data

{"address_id":1,"my_list":[{"size":12,"colour":"red","id":34219,"quantity":1},{"size":10,"colour":"red","id":12219,"quantity":2},{"size":8,"colour":"red","id":5214,"quantity":3}],"payment_card_id":1}

这是参数['my_list']

[u'colour', u'quantity', u'id', u'size']

我哪里错了?

尝试像这样访问数据:

for product in args.my_list:
        size = product.get('size')
        etc....

这将允许您遍历 my_list 列表中的所有 dict 对象。

您的解析器 add_argument 选项是什么? products_in_basket 是请求数据的实际键吗?或者您是否试图提供任意名称 and/or 重命名字典?

看看 Multiple Values & Lists 来自 请求解析 文档。

您可能想要做这样的事情...

parser = reqparse.RequestParser()
parser.add_argument('my_list', action='append')

您可以在add_argument函数中使用location参数。这将指定您正在使用 json 并将在列表中附加其他元素。

parser = reqparse.RequestParser()
parser.add_argument('my_list', location='json')