GenericAPIView 继承APIView,在APIView的基础上又增加了一些功能(方法)。例如:get_querysetget_object等。

    实际在开发中一般不会直接继承它,他更多的是担任 中间人的角色,为子类提供公共功能。

    1. # urls.py
    2. from django.urls import path, re_path, include
    3. from app01 import views
    4. urlpatterns = [
    5. path('api/users/', views.UserView.as_view()),
    6. path('api/users/<int:pk>/', views.UserDetailView.as_view()),
    7. ]
    1. # views.py
    2. from rest_framework.generics import GenericAPIView
    3. from rest_framework.response import Response
    4. class UserView(GenericAPIView):
    5. queryset = models.UserInfo.objects.filter(status=True)
    6. serializer_class = 序列化类
    7. def get(self, request):
    8. queryset = self.get_queryset()
    9. # queryset = models.UserInfo.objects.filter(status=True)
    10. ser = self.get_serializer(intance=queryset,many=True)
    11. # ser = self.序列化类(intance=queryset,many=True)
    12. print(ser.data)
    13. return Response({"code": 0, 'data': "..."})

    注意:最大的意义,将数据库查询、序列化类提取到类变量中,后期再提供公共的get/post/put/delete等方法,让开发者只定义类变量,自动实现增删改查。