Django框架五个扩展类的使用方法

1)ListModelMixin
列表视图扩展类,提供list(request, *args, **kwargs)方法快速实现列表视图,返回200状态码。

该Mixin的list方法会对数据进行过滤和分页。

from rest_framework import mixins
class BookListView(mixins.ListModelMixin,GenericAPIView):
    """
    GenericAPIView实现获取所有图书信息的接口"""
    serializer_class = BookInfoSerializer
    # 指定查询集  queryset负责接受查询集
    queryset = BookInfo.objects.all()
    def get(self,request):
        return self.list(request)

2)CreateModelMixin
创建视图扩展类,提供create(request, *args, **kwargs)方法快速实现创建资源的视图,成功返回201状态码。

如果序列化器对前端发送的数据验证失败,返回400错误。

# 子类视图ListAPIView
class BookListView(ListAPIView):
    """
    ListAPIView实现获取所有图书信息的接口
    ListAPIView 自己写了 def get()..... ret...
    所以我们不用在写
    """
    # 指定反序列化器类
    serializer_class = BookInfoSerializer
    # 指定查询集  queryset负责接受查询集
    queryset = BookInfo.objects.all()

3) RetrieveModelMixin

详情视图扩展类,提供retrieve(request, *args, **kwargs)方法,可以快速实现返回一个存在的数据对象。

如果存在,返回200, 否则返回404。

class BookDetailView(mixins.RetrieveModelMixin,GenericAPIView):
    """GenericAPIView查询单一的数据的接口"""
 
    # 指定反序列化器类
    serializer_class = BookInfoSerializer
    # 指定查询集  queryset负责接受查询集
    queryset = BookInfo.objects.all()
    def get(self,request,pk):
        return self.retrieve(request)

4)UpdateModelMixin
更新视图扩展类,提供update(request, *args, **kwargs)方法,可以快速实现更新一个存在的数据对象。

同时也提供partial_update(request, *args, **kwargs)方法,可以实现局部更新。

成功返回200,序列化器校验数据失败时,返回400错误。

class BookUpdateView(mixins.UpdateModelMixin,GenericAPIView):
    """UpdateModelMixin获取数据"""
    # 指定反序列化器类
    serializer_class = BookInfoSerializer
    # 指定查询集  queryset负责接收查询集
    queryset = BookInfo.objects.all()
 
    def put(self, request, *args, **kwargs):
        return self.update(request, *args, **kwargs)

5)DestroyModelMixin
删除视图扩展类,提供destroy(request, *args, **kwargs)方法,可以快速实现删除一个存在的数据对象。

成功返回204,不存在返回404。

class BookDestroyView(mixins.DestroyModelMixin,GenericAPIView):
    """UpdateModelMixin获取数据"""
    # 指定反序列化器类
    serializer_class = BookInfoSerializer
    # 指定查询集  queryset负责接收查询集
    queryset = BookInfo.objects.all()
    
    def delete(self,request, *args, **kwargs):
        return self.destroy(request, *args, **kwargs)

几个可用子类视图
1) CreateAPIView
提供 post 方法

继承自: GenericAPIView、CreateModelMixin

2)ListAPIView
提供 get 方法

继承自:GenericAPIView、ListModelMixin

3)RetrieveAPIView
提供 get 方法

继承自: GenericAPIView、RetrieveModelMixin

4)DestoryAPIView
提供 delete 方法

继承自:GenericAPIView、DestoryModelMixin

5)UpdateAPIView
提供 put 和 patch 方法

继承自:GenericAPIView、UpdateModelMixin

6)RetrieveUpdateAPIView
提供 get、put、patch方法

继承自: GenericAPIView、RetrieveModelMixin、UpdateModelMixin

7)RetrieveUpdateDestoryAPIView
提供 get、put、patch、delete方法

继承自:GenericAPIView、RetrieveModelMixin、UpdateModelMixin、DestoryModelMixin

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值