如何在python django request.POST中提取列表列表

时间:2016-06-09 10:34:30

标签: python ajax django post

我发布了ajax的数据,数据包括csrfmiddlewaretoken(string),rcount(int)和价格列表。 POSTED数据到Django视图看起来像这样。

<QueryDict: {u'prices[2][]': [u'2128', u'5', u'06/09/2016', u'12:00 AM'], u'prices[0][]': [u'2147', u'5', u'06/09/2016', u'12:00 AM'], u'rcount': [u'59'], u'prices[1][]': [u'2108', u'5', u'06/09/2016', u'12:00 AM'], u'csrfmiddlewaretoken': [u'55qQByfBUxgII2nLJCkFZHHaJjJCF70p']}>

现在,当我使用以下语法访问rcount时,它可以正常工作。

request.POST.get(rcount)

但是当我尝试访问价格变量时,它无法获得价值。

request.POST.get(prices)
or
request.POST.getlist(prices)

此代码用于将数据从HTML发布到Django View。

var records = []

records.push([2128, 5, '06/09/2016', '12:00 AM']);
records.push([2147, 5, '06/09/2016', '12:00 AM']);
records.push([2108, 5, '06/09/2016', '12:00 AM']);

var postData = {prices: records, rcount:59, csrfmiddlewaretoken: "{{ csrf_token }}"};
var posting = $.post('/myview/setprices/', postData);

我如何获取价目表?

从Rajesh Yogeshwar的回答中,我使用了stringify并将postData更改为

var postData = {prices: JSON.stringify((records), rcount:59, csrfmiddlewaretoken: "{{ csrf_token }}"};
var posting = $.post('/myview/setprices/', postData);

现在在request.POST中找到价格作为JSON值,可以使用以下语法转换为python列表。

prices = request.POST.get('prices')
if prices:
    prices = json.loads(prices)

这解决了我的问题。

2 个答案:

答案 0 :(得分:2)

继续我对原始问题的评论,你可以用这种方式格式化数据

var records = new Array();

records.push({'key1': 2128, 'key2': 5, 'key3': '06/09/2016', 'key4': '12:00 AM'})

您可以将N条记录推送到记录数组中。

之后,您可以替换此行

var postData = {prices: records, rcount:59, csrfmiddlewaretoken: "{{ csrf_token }}"};

用这个

var postData = {prices: JSON.stringify(records), rcount:59, csrfmiddlewaretoken: "{{ csrf_token }}"};

在您的观看中,您只需执行

即可
prices = request.POST.get('prices', None)
if prices:
    prices = json.loads(prices)

所以现在价格是字典列表,你可以做任何你想做的事情

答案 1 :(得分:1)

它失败,因为您提供的字典中没有'prices'个键 而是键'prices[2][]''prices[0][]''prices[1][]'。这些是普通的字符串。

您应该检查此数据发布的方式。