Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:将多个键传递到AJAX中,包括JavaScript序列化形式,并用python对其进行解析_Javascript_Python_Jquery_Django - Fatal编程技术网

Django:将多个键传递到AJAX中,包括JavaScript序列化形式,并用python对其进行解析

Django:将多个键传递到AJAX中,包括JavaScript序列化形式,并用python对其进行解析,javascript,python,jquery,django,Javascript,Python,Jquery,Django,我需要什么 我试图找到一种方法,通过AJAX将多层字典发送到我的服务器,包括使用serialize()的JavaScript序列化表单 问题 当我使用数据时:frm.serialize()。它是一个单层json,返回到服务器时很容易解析,结果如下: 然后,当使用嵌套字典时 数据:{'form':frm.serialize(),'additional_data':12,'csrfmiddlewaretoken':$('input[name=csrfmiddlewaretoken]).val()

我需要什么

我试图找到一种方法,通过AJAX将多层字典发送到我的服务器,包括使用
serialize()
的JavaScript序列化表单

问题

当我使用
数据时:frm.serialize()。它是一个单层json,返回到服务器时很容易解析,结果如下:


然后,当使用嵌套字典时

数据:{'form':frm.serialize(),'additional_data':12,'csrfmiddlewaretoken':$('input[name=csrfmiddlewaretoken]).val()}```
我得到:


我尝试过的

我尝试使用
urllib
将数据的表单部分解析为单独的变量。像这样:

x=parse_qs(urllib.parse.urlparse(request.POST['form']).query)
这将返回一个空的dicitonary

代码

HTML


[…更多代码]
Javscript

函数发送\复制\数据(){
var frm=$(“#复制_形式”)
var form\u server\u response=提交表单数据(frm)
}
//处理回复表单保存的父函数
$(“#创建"复制"预订"按钮)。在('单击',函数()上){
发送\u复制\u数据()
});
//提交预订数据
功能提交表单数据(frm){
var tmp=$.ajax({
类型:frm.attr('method'),
async:false,
url:window.location.href,
数据:{'form':frm.serialize(),
“附加数据”:12,
'csrfmiddlewaretoken':$(“输入[name=csrfmiddlewaretoken]”)。val()}
});
返回tmp.responseJSON;
}
也许我可以利用Django在其中间件中所做的任何事情来解析第一个场景中的表单数据?

方法
.serialize()
以标准URL编码的符号创建文本字符串

您可以使用
urllib.parse.parse_qs
解析查询字符串(GET发送到服务器的表单数据)或
request.POST['form']
,因为它使用相同的编码

查询字符串是URL的元素,而
请求。POST['form']
没有名为
Query

from urllib import parse
x = parse.parse_qs(request.POST['form']).query)
从urllib导入解析
x=parse.parseqs(request.POST['form']).query)

工作正常。谢谢你!