一、两个基本类视图
1.APIView
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