试图使用jquery将自定义json数据传递给django,但是django无法正确地接收数据。数据样本:
var data = {};
data.mylist = [{'a':'b'},{'a':'b'}];
data.myvar = 'something';
data.action = 'submit_invoice'
$.post(window.invoice_url, data, function(res){
console.log(res)
});
Django意见:
def foo(request):
mylist = request.POST.getlist('mylist',None)
myvar = request.POST.get('myvar', None)
print(mylist)
print(myvar)
print(request.POST)
打印是一些东西,[]和< QueryDict:{'action':‘submit_In发’,‘mylist 1’:'b','myvar':‘某事’,‘mylist’‘:'b'}’和django不能正确地获得mylist。
发布于 2018-10-26 07:53:29
如果您希望发送JSON,则应该将所传递的对象stringify
设置为stringify
,并将dataType
设置为json
$.post(window.invoice_url, JSON.stringify(data), function(res){
console.log(res)
}, 'json');
在Django视图中,应该使用json.loads()
加载请求的主体,然后可以访问所需的属性:
import json
def foo(request):
data = json.loads(request.body.decode('utf-8'))
mylist = data['mylist']
myvar = data['myvar']
print(mylist)
print(myvar)
发布于 2018-10-25 20:20:41
你不能直接把js对象传递给url,
使用v_data = jQuery.param(data)
,将请求发送给v_data
。
param()
方法创建数组或对象的序列化表示,这些表示可以为各种框架所理解,如php、ruby、django等。
再次将其转换为python
from urllib import parse
value = parse.parse_qs(self.request.POST.get('v_name'))
请注意,使用prase可能会丢失一些信息,所以在python中获取数据后再检查数据。
https://stackoverflow.com/questions/53001088
复制