DRF视图类中除了APIView类,还有一个GenericAPIView类。GenericAPIView类主要给我们提供了2个属性,3个方法。
属性:
queryset:要序列化的数据
serializer_class:序列化类
方法:
get_queryset():获取要序列化的数据
get_object():根据条件获取对象
get_serializer():获取序列化类
1 from rest_framework.generics import GenericAPIView 2 3 # 查询所有数据、添加数据接口 4 class BookView(GenericAPIView): 5 """重写属性""" 6 # 数据库数据 7 queryset = models.Book.objects.all() 8 # 序列化类 9 serializer_class = serializer.BookSerializer 10 def get(self, request): 11 """使用父类方法获取属性""" 12 book_list = self.get_queryset() 13 ser = self.get_serializer(instance=book_list, many=True) 14 return Response(ser.data) 15 16 def post(self, request): 17 """使用父类方法获取属性""" 18 ser = self.get_serializer(data=request.data) 19 if ser.is_vaild(): 20 ser.save() 21 return Response({'code': 100, 'msg': '添加成功'}) 22 return Response({'code': 99, 'msg': '添加失败'}) 23 24 # 查询一个数据、修改数据、删除数据接口 25 class BookDetailView(GenericAPIView): 26 """重写属性""" 27 # 数据库数据 28 queryset = models.Book.objects.all() 29 # 序列化类 30 serializer_class = serializer.BookSerializer 31 32 def get(self, request, *args, **kwargs): 33 """使用父类方法获取属性""" 34 book_obj = self.get_object() 35 ser = self.get_serializer(instance=book_obj) 36 return Response(ser.data) 37 38 def put(self, request, *args, **kwargs): 39 ... 40 41 def delete(self, request, *args, **kwargs): 42 ...
标签:ser,get,self,request,视图,序列化,serializer,DRF From: https://www.cnblogs.com/powfu/p/16948810.html