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)
作者:小公瑾
-------------------------------------------
个性签名:不忘初心,方得始终!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!