GenericAPIView 继承APIView,在APIView的基础上又增加了一些功能(方法)。例如:get_queryset、get_object等。
实际在开发中一般不会直接继承它,他更多的是担任 中间人的角色,为子类提供公共功能。
# urls.pyfrom django.urls import path, re_path, includefrom app01 import viewsurlpatterns = [path('api/users/', views.UserView.as_view()),path('api/users/<int:pk>/', views.UserDetailView.as_view()),]
# views.pyfrom rest_framework.generics import GenericAPIViewfrom rest_framework.response import Responseclass UserView(GenericAPIView):queryset = models.UserInfo.objects.filter(status=True)serializer_class = 序列化类def get(self, request):queryset = self.get_queryset()# queryset = models.UserInfo.objects.filter(status=True)ser = self.get_serializer(intance=queryset,many=True)# ser = self.序列化类(intance=queryset,many=True)print(ser.data)return Response({"code": 0, 'data': "..."})
注意:最大的意义,将数据库查询、序列化类提取到类变量中,后期再提供公共的get/post/put/delete等方法,让开发者只定义类变量,自动实现增删改查。
