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

  • 相关阅读:
    安卓使用socket建立通信客户端不显示数据
    使用bmob后端云中listview如何实现数据显示在第一个item
    安卓如何实现点击一个按钮退出整个程序?
    Python安装与准备
    敏感度——区分平庸和伟大
    fragment中设置点击事件(onclick)使用intent进行通信
    listview的几种简单用法
    Android开发现在是不是该学?
    数据包重放
    Sql注入一种dump所有数据的方法
  • 原文地址:https://www.cnblogs.com/dorian/p/12377907.html
Copyright © 2011-2022 走看看