基於 django RestFramework ,加工或者修改 request.POST 的數據內容


背景:

經常,我們希望在 django的viewset視圖函數 中對request中的數據進行一定的添加或修改,然后才將數據傳到 serializer中去。

例如,根據前端的token 提取出某用戶的個人信息,再將個人信息和表單數據一起提交到serializer,serializer.save() 保存到數據庫中,記錄下添加該條數據 的用戶。

問題點:

但是django 機制中的 request 是不允許被修改的

解決方案:

1、data = request.POST.copy()  

復制request body數據 到 data 中,對data進行修改

def create(self, request, *args, **kwargs):
    print(request.POST)
    data = request.POST.copy()
    data['test'] =11111
    print(data)
    return Response(‘’)

#輸出
<QueryDict: {'from postman': ['1']}>
<QueryDict: {'from postman': ['1'], 'test': [11111]}>

 

2、request.POST._mutable =True

修改該字典的mutable屬性值

def create(self, request, *args, **kwargs):        
        print(request.POST)
        request.POST._mutable = True
        request.POST['test']=11111
        print(request.POST)
        request.POST._mutable = False
        request.POST['test2']=22222    
        return Response('')    

# 輸出
<QueryDict: {}>
<QueryDict: {'test': [11111]}>
......
AttributeError: This QueryDict instance is immutable

 

 

tips:

 相同的方法也可以用於request.GET  或者 request.data

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM