0021 DRF框架开发(08 子类视图)

  GenericAPIView基类视图比APIView基类视图更简单。但还可以更简单,GenericAPIView视图中,要继承多个mixins,而且,还要写多个方法,能不能有一种办法,直接继承一个类,而且,不需要再在类中写多个方法呢?DRF早就为我们考虑到了!

  DRF提供了8个子类视图,用于针对单一功能提供视图。

  打开Applications/Examples/views/Schools.py,先导入八个包文件:

from rest_framework.generics import GenericAPIView, CreateAPIView, ListAPIView, RetrieveAPIView, DestroyAPIView, 
    UpdateAPIView, RetrieveUpdateAPIView, RetrieveDestroyAPIView, RetrieveUpdateDestroyAPIView

1 CreateAPIView

  提供POST,用于新增一条记录。

class SchoolCreateAPIView(CreateAPIView):
    """
    【功能描述】:用于新增一条记录
    """
    serializer_class = SchoolsSerializer

2 ListAPIView

  提供GET方法,用于查询多条记录

class SchoolListAPIView(ListAPIView):
    """
    【功能描述】用于查询所有记录
    """
    queryset = Schools.objects.all()
    serializer_class = SchoolsSerializer

3 RetrieveAPIView

  提供GET方法,用于查询一条记录

class SchoolRetrieveAPIView(RetrieveAPIView):
    """
    【功能描述】用于查询一条记录
    """
    queryset = Schools.objects.all()
    serializer_class = SchoolsSerializer

4 DestroyAPIView

  提供DELETE方法,用于删除一条记录

class SchoolDestroyAPIView(DestroyAPIView):
    """
    【功能描述】用于删除一条记录
    """
    queryset = Schools.objects.all()
    serializer_class = SchoolsSerializer

5 UpdateAPIView

  提供PUT和PATCH方法,用于更新一条记录。

  DRF自动生成两个相应的接口,并根据前端提交方式,调用相应的接口。

class SchoolUpdateAPIView(UpdateAPIView):
    """
    【功能描述】用于更新一条记录
    """
    queryset = Schools.objects.all()
    serializer_class = SchoolsSerializer

6 RetrieveUpdateAPIView

  提供GET、PUT、PATCH方法,用于查询一条记录或者更新一条记录,其中GET用于查询一条记录,PUT和PATCH用于更新一条记录。

  DRF自动生成三个相应的接口,并根据前端提交方式,调用相应的接口。

class SchoolRetrieveUpdateAPIView(RetrieveUpdateAPIView):
    """
    【功能描述】用于查询、更新一条记录
    """
    queryset = Schools.objects.all()
    serializer_class = SchoolsSerializer

7 RetrieveDestroyAPIView

  提供GET、DELETE方法,用于查询、删除一条记录。

  DRF自动生成三个相应的接口,并根据前端提交方式,调用相应的接口。

class SchoolRetrieveDestroyAPIView(RetrieveDestroyAPIView):
    """
    【功能描述】用于查询、删除一条记录
    """
    queryset = Schools.objects.all()
    serializer_class = SchoolsSerializer

8 RetrieveUpdateDestroyAPIView

  提供GET、PUT、PATCH、DELETE用于查询、更新、删除一条记录。

  DRF自动生成四个相应的接口,并根据前端提交方式,调用相应的接口。

class SchoolRetrieveUpdateDestroyAPIView(RetrieveUpdateDestroyAPIView):
    """
    【功能描述】用于查询、更新或删除一条记录
    """
    queryset = Schools.objects.all()
    serializer_class = SchoolsSerializer

9 配置url

  导入上面八个子类视图,并配置相应的url

path('SchoolCreate/', SchoolCreateAPIView.as_view()),
path('SchoolListAPI/', SchoolListAPIView.as_view()),
path('SchoolRetrieve/<int:pk>/', SchoolRetrieveAPIView.as_view()),
path('SchoolDestroy/<int:pk>/', SchoolDestroyAPIView.as_view()),
path('SchoolUpdateAPI/<int:pk>/', SchoolUpdateAPIView.as_view()),
path('SchoolRetrieveUpdate/<int:pk>/', SchoolRetrieveUpdateAPIView.as_view()),
path('SchoolRetrieveDestroy/<int:pk>/', SchoolRetrieveDestroyAPIView.as_view()),
path('SchoolRetrieveUpdateDestroy/<int:pk>/', SchoolRetrieveUpdateDestroyAPIView.as_view()),

10 运行,测试所有接口。

原文地址:https://www.cnblogs.com/dorian/p/12377907.html