前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DRF的GenericAPIView和Mixin配合使用

DRF的GenericAPIView和Mixin配合使用

作者头像
zy010101
发布2021-12-17 20:29:06
6050
发布2021-12-17 20:29:06
举报
文章被收录于专栏:程序员

DRF的GenericAPIView和Mixin配合使用

mixin 类提供用于基本视图行为的操作。请注意,mixin 类提供操作方法,而不是直接定义处理程序方法。mixin 类可以从rest_framework.mixins导入,一般我们常用的就是下面几个。

from rest_framework.mixins import CreateModelMixin, ListModelMixin, RetrieveModelMixin, DestroyModelMixin, UpdateModelMixin

见名知意,它们实现了列表方法和增删改查。下面使用mixin配合GenericAPIView来重新实现在DRF二级视图GenericAPIView中所实现过的所有方法。

代码语言:javascript
复制
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改为如下所示:

代码语言:javascript
复制
path('book1/', BookCreateAndList.as_view()),
path('book1/<int:pk>', BookRUD.as_view()),

两种实现方式的API响应页面截图如下所示:

GenericAPIView和Mixin配合使用,代码量减少了,但是得到的API效果是一致的。虽然这里我们展示的比较简单。但是实际开发中的80%业务常规业务,20%的业务是特殊情况。因此,GenericAPIView和Mixin配合使用还是非常方便的。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/12/16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DRF的GenericAPIView和Mixin配合使用
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档