我发布了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)
这解决了我的问题。
答案 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][]'
。这些是普通的字符串。
您应该检查此数据发布的方式。