DRF框架之mixins


一、ListModelMixin

  • 提供list(request, *args, **kwargs)方法
  • 獲取已存在的列表數據(獲取多條記錄)
  • 獲取成功,則返回200 OK

1.引入方式

from rest_framework.mixins import ListModelMixin

2.源碼對比

我們可以發現,兩處的代碼基本一致,因此我們直接拿到使用來優化本地代碼

3.使用方法

a.視圖類繼承ListModelMixin

b.get方法中直接return self.list(request, *args, **kwargs)

    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)

二、CreateModelMixin

  • 提供create(request, *args, **kwargs)方法
  • 創建新的模型實例(創建新的記錄)
  • 創建成功,返回201 Created
  • 如果請求參數有誤,返回400 Bad Request

1.引入方式

from rest_framework.mixins import CreateModelMixin

2.源碼對比

依然也是基本一致

3.使用方法

a.視圖類繼承CreateModelMixin

b.post方法中直接return self.create(request, *args, **kwargs)

    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)

三、RetrieveModelMixin

  • 提供retrieve(request, *args, **kwargs)方法
  • 獲取已存在的詳情數據(一條記錄)
  • 獲取成功,返回200 OK
  • 如果不存在,則返回404 Not Found

1.引入方式

from rest_framework.mixins import RetrieveModelMixin

2.源碼對比

3.使用方法

a.視圖類繼承RetrieveModelMixin

b.get方法中直接return self.retrieve(request, *args, **kwargs)

    def get(self, request, *args, **kwargs):
        return self.retrieve(request, *args, **kwargs)

四、UpdateModelMixin

  • 提供update(request, *args, **kwargs)方法,用於全更新
  • 提供partail_update(request, *args, **kwargs)方法,用戶部分更新,支持PATCH方法
  • 更新已存在的模型實例(更新一條記錄)
  • 更新成功,返回200 OK
  • 如果請求參數有誤,返回400 Bad Request
  • 如果不存在,返回404 Not Found

1.引入方式

from rest_framework.mixins import UpdateModelMixin

2.源碼對比

注:這里有一點不一樣,源碼中有一個‘partial’,這個表示可以進行部分更新,因此update方法不僅支持全更新,也可以支持部分更新

3.使用方法

a.視圖類繼承UpdateModelMixin

b.put方法中直接return self.retrieve(request, *args, **kwargs)

    def put(self, request, *args, **kwargs):
        return self.update(request, *args, **kwargs)

五、DestroyModelMixin

  • 提供destroy(request, *args, **kwargs)方法
  • 刪除一條已存在的數據(刪除一條記錄)
  • 刪除成功,返回204 No Content
  • 如果不存在,返回404 Not Found

1.引入方式

from rest_framework.mixins import DestroyModelMixin

2.源碼對比

3.使用方法

a.視圖類繼承DestroyModelMixin

b.delete方法中直接return self.retrieve(request, *args, **kwargs)

    def delete(self, request, *args, **kwargs):
        return self.destroy(request, *args, **kwargs)

 


免責聲明!

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



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