python_web学习笔记六:django基础篇之DRF-视图类

一、两个基本类视图

1.APIView

  • 继承Django的View
  • 认证属性

    可帮助实现用户认证

  • 权限属性

    实现用户操作权限的判断

  • 限流属性

    实现用户限流操作

2.GenericAPIView

  • 继承APIView
  • 序列化器属性(serializer_class)
    • self.get_serializer()

      根据序列化器属性指定的序列化器初始化操作得到的序列化器对象

  • 查询集属性(query_set=)
    • 获取属性指定的所有查询数据

      self.get_queryset()

    • 获取查询集中单一数据对象

      self.get_object()

  • 分页属性
    • 实现分页功能

      # 导包
      from rest_framework.pagination import PageNumberPagination
      
      
      # 改造示例
      class PageNum(PageNumberPagination):
          page_size = 5
          page_size_query_param = "pagesize"
          max_page_size = 10
      
          def get_paginated_response(self, data):
              return Response({
                  'count': self.page.paginator.count,  # 总数量
                  'lists': data,  # 用户数据
                  'page': self.page.number,  # 当前页数
                  'pages': self.page.paginator.num_pages,  # 总页数
                  'pagesize': self.page_size  # 后端指定的页容量
              })
          
          
       # 指定分页器
      pagination_class = PageNum
      
    • 排序

      # 导包
      from rest_framework.filters import OrderingFilter
      # 排序示例
          filter_backends = [OrderingFilter]
          ordering_fields = ('id', 'bread', 'pub_date')
      

二、五个拓展类

必须配合GenericAPIView一起使用

说明
CreateModelMixin封装create方法,实现了数据保存
ListModelMixin封装list方法,获取指定的查询集数据
RetrieveModelMixin封装retrieve方法,获取单一数据对象
UpdateModelMixin封装update方法,更新数据
DestroyModelMixin封装destory方法,删除数据

三、拓展类子类

说明
CreateAPIView实现了post 保存数据
ListAPIView实现了get 获取所有查询集数据
ListCreateAPIView实现了post和get 保存数据和获取所有查询集数据
RetrieveAPIView实现了get方法 获取单一数据对象
UpdateAPIView实现了put方法 更新数据
DestoryAPIView实现了delete方法 删除数据
RetrieveUpdateAPIView实现了get和put方法 获取单一数据对象和更新数据
RetrieveUpdateDestoryAPIView实现get、put、delete

四、视图集

1.两个基本视图集

  • ViewSet
    • 继承APIView和ViewSetMixin

      ViewSetMixin拓展类重写as_view方法

  • GenericViewSet
    • 继承GenericAPIView和ViewSetMixin

2.两个拓展视图集

  • ModelViewSet
    • 继承了五个拓展类和GenericViewSet
  • ReadOnlyModelViewSet
    • 继承了ListModelMixin和RetrieveModelMixin和GenericViewSet

3.视图集和视图类的使用区别

  • 路由匹配形式不一样
  • 定的类视图中的方法不必按照请求方式定义
  • 可以使用自定生成路由的方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值