DRF的GenericAPIView和Mixin配合使用
2023-04-18 15:36:31 时间
DRF的GenericAPIView和Mixin配合使用
mixin 类提供用于基本视图行为的操作。请注意,mixin 类提供操作方法,而不是直接定义处理程序方法。mixin 类可以从rest_framework.mixins导入,一般我们常用的就是下面几个。
from rest_framework.mixins import CreateModelMixin, ListModelMixin, RetrieveModelMixin, DestroyModelMixin, UpdateModelMixin
见名知意,它们实现了列表方法和增删改查。下面使用mixin配合GenericAPIView来重新实现在DRF二级视图GenericAPIView中所实现过的所有方法。
class BookCreateAndList(GenericAPIView, CreateModelMixin, ListModelMixin):
queryset = BookInfo.objects.all().order_by('id')
serializer_class = BookInfoSerializer
pagination_class = PageNum
def get(self, request):
"""列表方法"""
return self.list(request)
def post(self, request):
"""新增方法"""
return self.create(request)
class BookRUD(GenericAPIView, RetrieveModelMixin, UpdateModelMixin, DestroyModelMixin):
queryset = BookInfo.objects.all()
serializer_class = BookInfoSerializer
lookup_field = 'pk'
lookup_url_kwarg = 'pk'
def get(self, request, pk):
"""获取一条数据"""
return self.retrieve(request)
def put(self, request, pk):
"""新增一条数据"""
return self.update(request)
def delete(self, request, pk):
"""删除一条数据"""
return self.delete(request)
为了对比起见,GenericAPIView和Mixin配合使用的URL改为如下所示:
path('book1/', BookCreateAndList.as_view()),
path('book1/<int:pk>', BookRUD.as_view()),
两种实现方式的API响应页面截图如下所示:
GenericAPIView和Mixin配合使用,代码量减少了,但是得到的API效果是一致的。虽然这里我们展示的比较简单。但是实际开发中的80%业务常规业务,20%的业务是特殊情况。因此,GenericAPIView和Mixin配合使用还是非常方便的。
相关文章
- 直接在代码里面对list集合进行分页
- .NET Framework 4.5新特性详解
- 大数据的简要介绍
- 大数据的由来
- 高斯混合模型的自然梯度变量推理
- timing-wheel 仿Kafka实现的时间轮算法
- 使用Navicat软件连接自建数据库(Linux系统)
- 那一天,我被Redis主从架构支配的恐惧
- Redis 深入了解键的过期时间
- C#使用委托调用实现用户端等待闪屏
- 基于流计算 Oceanus 和 Elasticsearch Service 构建百亿级实时监控系统
- GRAND | 转录调控网络预测数据库
- JFreeChart API中文文档
- 临床相关突变查询数据库
- TIGER | 人类胰岛基因变化查询数据库
- 视频边缘计算网关EasyNVR在视频整体监控解决方案中的应用分析
- Apache Arrow - 大数据在数据湖后的下一个风向标
- 常见的电商数据指标体系
- AKShare-艺人数据-艺人流量价值
- MySQL中多表联合查询与子查询的这些区别,你可能不知道!