码迷,mamicode.com
首页 > 其他好文 > 详细

DRF框架之mixins

时间:2020-07-19 17:58:24      阅读:68      评论:0      收藏:0      [点我收藏+]

标签:pat   *args   framework   获取   对比   class   lazy   post   color   

一、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)

 

DRF框架之mixins

标签:pat   *args   framework   获取   对比   class   lazy   post   color   

原文地址:https://www.cnblogs.com/xiaogongjin/p/13339535.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!