记Django CBV下的put,delete方法反序列化不成功的解决办法

在使用Django Class-Based Views (CBV)时,遇到PUT和DELETE请求的数据反序列化失败的问题。错误提示表明数据无法正确解析。通过查阅前辈的博客文章,找到了解决方案:调整CBV处理URL的部分,使数据能正确反序列化,从而能进行后续处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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就能得到理想结果了,之后再做相应处理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值