我正在使用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']
我哪里错了?
答案 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')