Flask Restful接受邮寄请求中的列表

时间:2015-09-24 20:35:52

标签: python flask flask-restful

我正在使用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}

这是args [' my_list']

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

我哪里错了?

3 个答案:

答案 0 :(得分:7)

您的解析器add_argument选项有哪些? products_in_basket是否是请求数据的实际密钥?或者您是否尝试提供任意名称和/或重命名字典?

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

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

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

答案 1 :(得分:1)

尝试访问以下数据:

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

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

答案 2 :(得分:0)

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

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