• 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 运行,测试所有接口。

  • 相关阅读:
    Docker windows 安装MySql和Tomcat
    Python2 Python3 爬取赶集网租房信息,带源码分析
    BeautifulSoup 一行代码获取今日日期,与smtplib结合
    Python3.x 发送邮件
    Python3 pymysql连接mysql数据库 windows
    urllib2.HTTPError: HTTP Error 403: Forbidden的解决方案
    BeautifulSoup([your markup]) to this: BeautifulSoup([your markup], "lxml") 解决未设置默认解析器的错误
    Python 3.x 中"HTTP Error 403: Forbidden"问题的解决方案
    继承习题
    继承
  • 原文地址:https://www.cnblogs.com/dorian/p/12377907.html
Copyright © 2020-2023  润新知