视图基类
1.1 APIView
from rest_framework.views import APIView
1.2 GenericAPIView[通用视图类]
from rest_framework.generics import GenericAPIView
继承自APIView
,主要增加了操作序列化器和数据库操作的方法,作用为下面的Mixin拓展类的执行提供方法和支持,可以搭配一个或多个Mixin拓展类。
class ProductsGenericeView(GenericAPIView):
queryset = Products.objects.all() # 当前视图类中操作的公共数据,先从数据库中查询出来
serializer_class = ProductsSerializer
def get(self, request):
"""获取所有的数据"""
products_list = self.get_queryset()
serializer = self.get_serializer(instance=products_list, many=True)
return Response(serializer.data)
def put(self, request, pk):
instance = self.get_object()
# 客户端提交的数据
data = request.data
# 实例化序列化器
serializer = self.get_serializer(instance=instance, data=data)
# 验证数据
serializer.is_vaild(raise_exception=True)
# 反序列化数据
serializer.save()
return Response(serializer.data)
1.2.1 GenericAPIView结合Mixin拓展类
ListModelMixin
:实现查询所有数据功能CreateModelMixin
: 实现添加数据的功能RetrieveModelMixin
: 实现查询一条数据功能UpdateModelMixin
: 更新一条数据功能DestroyModelMixin
: 删除一条数据功能
1.2.2 DRF下,内置了一些同时继承来了GenericAPIView和Mixin拓展类的视图子类,可以直接继承子类就可以生成对应的API接口
ListAPIView
: 获取所有数据CreateAPIView
: 添加数据RetrieveAPIView
: 获取一条数据DestorAPIView
: 删除一条数据UpdateAPIView
: 更新一条数据RetrieveUpdateDestoryAPIView
: RetrieveAPIView、UpdateAPIView、DestorAPIView的缩写