解析作为POST参数传递的字典列表

1 投票
3 回答
4480 浏览
提问于 2025-04-16 00:04

我有一个包含多个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的数据类型。

http://docs.python.org/library/json.html

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)

撰写回答