Django:将多个键传递到AJAX中,包括JavaScript序列化形式,并用python对其进行解析
我需要什么 我试图找到一种方法,通过AJAX将多层字典发送到我的服务器,包括使用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()
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)
工作正常。谢谢你!