zoukankan      html  css  js  c++  java
  • 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 运行,测试所有接口。

  • 相关阅读:
    securecrt 中文乱码解决方案
    linux文件压缩、下载命令
    weinre调试
    linux查看当前目录命令
    linux下清除缓存文件并重启tomcat
    undefined加引号和不加引号的区别
    web/wap微博分享链接
    linux查找文件内容
    MySQL 5.1 安装过程中报apply security setting错误的解决办法 收藏
    Sleep Mode For WSN of Jennic
  • 原文地址:https://www.cnblogs.com/dorian/p/12377907.html
Copyright © 2011-2022 走看看