【DRF】加工或修改request中的数据

背景:
经常,我们希望在 django的viewset视图函数 中对request中的数据进行一定的添加或修改,然后才将数据传到 serializer中去。

问题点:
但是django 机制中的 request 是不允许被修改的

解决方案
request.POST._mutable =True
修改该字典的mutable属性值

    def update_validate(self):
        """ 修改前校验 """
        name = self.request.data.get('name', None)
        # 如果没有name,则赋予原有的name
        if not name:
            instance = self.get_object()
            name = instance.name
            self.request.POST._mutable = True
            self.request.POST['name'] = name
            self.request.POST._mutable = False

如果想要对request.data进行整体性的修改,可以参考如下代码:

    def build_request(self, data, request):
        """ 构造请求对象 """
        request.data._mutable = True
        request.data.update(data)
        request.data._mutable = False

注意:

  • 这里的data是其他函数封装好的字典类型数据进行的传参

tips:
相同的方法也可以用于request.GET 或者 request.data

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值