JS前端准备以put及delete方式向后台发送数据
格式提取如下:
var postlist = [];
var temp={"id":"1","name":"月守护3dfd21","gender":"女","cls_id":"计算机三班"}
postlist.push(JSON.stringify(temp))
var temp={"id":"2","number":"1402024321","gender":"男"}
postlist.push(JSON.stringify(temp))
$.ajax({
url: requestUrl,
type: 'PUT',
data: {"postlist": JSON.stringify(postlist)},
//dataType: 'JSON',
success: function (arg) {
}
python Django后台却怎么都不能反序列化成功:
报错如下:
百般尝试之后:
幸见前辈博客:
https://www.cnblogs.com/lixiang1013/p/9139465.html
所以参照里面的讲解套用了一下:
'''先写一个类,定义一个函数'''
from django.http.request import QueryDict
class QueryDictJson():
def request_body_serialze(self,request):
'''处理数据进行反序列化的函数
#quertdict转成普通字典
对request.body做QuertDict编码转换处理
# 如果不做数据处理:格式b'id=49&name=%E4%B8%AD&name_cn=&comment='
# 页面中提交的中文“中”,变成%E4%B8%AD'''
querydict = QueryDict(request.body.decode("utf-8"), encoding="utf-8")
response_dict = {}
try:
for key, val in querydict.items():
response_dict[key] = val
except:
pass
return response_dict
CBV处理url部分:
class AssetJsonView(View,QueryDictJson):
'''继承两个类,一个是CBV模式需要,一个就是反序列化需要了'''
def put(self,request,*args,**kwargs):
data = self.request_body_serialze(request)
print(data)
这样得到的data就能得到理想结果了,之后再做相应处理