【问题标题】:Parsing a list of dictionaries passed as a POST parameter解析作为 POST 参数传递的字典列表
【发布时间】:2011-03-04 16:01:41
【问题描述】:

我有一个 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'])

但是当我的数据到达我的客户端应用程序时,我似乎没有字典列表。

【问题讨论】:

    标签: python django post dictionary iteration


    【解决方案1】:

    你没有说你是如何发布到应用程序的。我的建议是将字典序列化为 JSON,然后简单地发布。

    import json, urllib, urllib2
    data = json.dumps(sandwiches)
    urllib2.urlopen(myurl, urllib.urlencode({'data': data}))
    

    ...在接收器上:

    data = request.POST['data']
    sandwiches = json.loads(data)
    

    【讨论】:

      【解决方案2】:

      我会使用 JSON 库将您的 dicts 数组序列化为单个字符串。将此字符串作为 POST 参数发送,然后使用相同的库将字符串解析回 Django 应用程序中的 python 数据类型。

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

      【讨论】:

        【解决方案3】:

        首先制作列表的字符串

        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}]
        

        现在您会收到字典列表。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-06-21
          • 1970-01-01
          • 2021-09-26
          • 2021-09-27
          • 2019-11-18
          • 2013-08-07
          • 1970-01-01
          相关资源
          最近更新 更多