解析作为POST参数传递的字典列表
我有一个包含多个Python字典的列表,长得像这样:
sandwiches = [
{'bread':'wheat', 'topping':'tomatoes', 'meat':'bacon'},
{'bread':'white', 'topping':'peanut butter', 'meat':'bacon'},
{'bread':'sourdough', 'topping':'cheese', 'meat':'bacon'}
]
我想把这个列表作为POST参数传给另一个Django应用。那么客户端应用需要怎么做才能遍历这个列表呢?
我想做的事情大概是这样的:
for sandwich in request.POST['sandwiches']:
print "%s on %s with %s is yummy!" % (sandwich['meat'], sandwich['bread'], sandwich['topping'])
但是当我的数据到达客户端应用时,我好像并没有收到字典列表。
3 个回答
0
首先,把列表变成一个字符串。
import ast, requests
# request send code
dev_list = [{"1": 2}, {"2": 4}]
str_list = str(dev_list) # '[{"1": 2}, {"2": 4}]'
data = {"a" : "mynema",
'str_list': str_list
}
requests.post(url, data )
#request receive side
data = request.data
dev_list = data.get('str_list')
dev_list = ast.literal_eval(dev_list)
#dev_list --> [{"1": 2}, {"2": 4}]
现在你得到了一个字典的列表。
2
我会使用JSON库把你的字典数组转换成一个字符串。然后把这个字符串作为POST参数发送出去,在Django应用中用同样的库把这个字符串解析回Python的数据类型。
4
你没有说明你是怎么向应用发送数据的。我建议你把字典转换成JSON格式,然后直接发送这个JSON。
import json, urllib, urllib2
data = json.dumps(sandwiches)
urllib2.urlopen(myurl, urllib.urlencode({'data': data}))
... 接收方的处理方式是:
data = request.POST['data']
sandwiches = json.loads(data)