我有一个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'])
但是当我的数据到达我的客户端应用程序时,我似乎没有一个dicts列表。
答案 0 :(得分:4)
您没有说明你是如何发布应用程序的。我的建议是将字典序列化为JSON,然后简单地发布。
import json, urllib, urllib2
data = json.dumps(sandwiches)
urllib2.urlopen(myurl, urllib.urlencode({'data': data}))
......和接收者:
data = request.POST['data']
sandwiches = json.loads(data)
答案 1 :(得分:2)
我会使用JSON库将您的dicts数组序列化为单个字符串。将此字符串作为POST参数发送,并使用相同的库将字符串解析回Django应用程序中的python数据类型。
答案 2 :(得分: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}]
现在您收到字典列表。