Django REST Framework批量更新rest_framework_extensions


Django REST framework 是一套基於Django框架編寫RESTful風格API的組件。

 其中mixins配合viewsets能極其方便簡化對數據的增刪改查,

但本身並沒有對數據的批量更新刪除,利用rest_framework_extensions擴展包可以輕松幫我們實現這些功能。

安裝使用

pip install rest_framework_extensions

 

views.py

在視圖類中繼承ListUpdateModelMixin

1 from rest_framework_extensions.mixins import ListUpdateModelMixin
2 class ShoppingCartViewSet(ListUpdateModelMixin, viewsets.ModelViewSet):
3     pass

 

settings.py

1 CORS_ALLOW_HEADERS = ['*']  # 允許的請求頭
2 CORS_ORIGIN_ALLOW_ALL = True  # 允許跨域
3 
4 REST_FRAMEWORK_EXTENSIONS = {
5     'DEFAULT_BULK_OPERATION_HEADER_NAME': None
6 }

使用瀏覽器本地測試,在請求頭加上:X-BULK-OPERATION: true

使用patch方式請求測試成功,狀態碼204,不會返回任何東西

 

使用PUT方法批量更新

以上在瀏覽器使用正常,但發現在微信小程序中並不支持patch方法,只能用put方法。要么重新再寫一個put接口,要么更改源碼。

ctrl點擊查看ListUpdateModelMixin碼源,果真只有put方法。怎么辦?

把patch方法復制粘貼一份,改名為put即可,同樣測試成功。

\Lib\site-packages\rest_framework_extensions\bulk_operations\mixins.py

 

對於以上修改。對於沒有使用虛擬環境的同學,個人建議不要直接修改源碼,一定要把整個包拷到項目目錄下再修改。

在項目目錄下新建extra_apps文件夾,用來存放要修改的第三方包。

再在settings.py中添加以下。優先從extra_apps文件夾導包。

import os
import sys
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps'))

 微信小程序測試正常

 

 

 

 


免責聲明!

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



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