zoukankan      html  css  js  c++  java
  • 0020 DRF框架开发(07 基类视图 GenericAPIView)

      前端于对数据操作的请求基本上就分为四类:增删改查,即增加、删除、修改、查询。

      而DRF把前端请求分为两个大类:带ID参数请求和不带ID参数请求。

      不带ID参数请求包括:增加、分布多条查询

      带ID参数请求包括:删除、修改、单条查询

      DRF针对这五类需求,分别提供了五个扩展类来支持,叫Mixin扩展类。

      GenericAPIView继承自APIView,主要增加了操作序列化器和数据查询的方法。作用是为Mixin扩展类执行提供方法支持。通常在使用时,可搭配一个或多个Mixin扩展类。

      找到并打开Applications/Examples/views下的Schools.py文件,在操作GenericAPIView时,首先要导入两个包:

    from rest_framework.generics import GenericAPIView
    from rest_framework import mixins

    1 不带ID参数请求

    class SchoolsGenericListView(GenericAPIView, mixins.ListModelMixin, mixins.CreateModelMixin):
        queryset = Schools.objects.all()
        serializer_class = SchoolsSerializer
    
        def get(self, request):
            return self.list(request)
    
        def post(self, request):
            return self.create(request)
    

    2 带ID参数请求

    class SchoolsGenericDetailView(GenericAPIView, mixins.RetrieveModelMixin, mixins.UpdateModelMixin,
                                   mixins.DestroyModelMixin):
        queryset = Schools.objects.all()
        serializer_class = SchoolsSerializer
    
        def get(self, request, pk):
            return self.retrieve(request, pk)
    
        def put(self, request, pk):
            return self.update(request, pk)
    
        def delete(self, request, pk):
            return self.destroy(request, pk)
    

    3 配置两个路由

      配置路由之前,需要先导入Schools.py包中的视图路径。

    path('SchoolsGenericList/', SchoolsGenericListView.as_view()),
    path('SchoolsGenericDetail/<int:pk>', SchoolsGenericDetailView.as_view()),
    

      

      通过两个基类视图APIView,GenericAPIView的学习,掌握url是否携带ID参数可把视图分为两类,分别对应不同的url,也就是说,完成五个前端的基本请求,只需要配置两个路由。

  • 相关阅读:
    微信开发笔记-调用自定义分享接口
    应试教育
    AJAX学习笔记
    日志管理-Log4net
    linq学习笔记
    委托学习笔记后续:泛型委托及委托中所涉及到匿名方法、Lambda表达式
    Webservice服务创建、调用笔记
    设计模式(23)---迭代器模式
    设计模式(22)---备忘录模式
    设计模式(21)---访问者模式
  • 原文地址:https://www.cnblogs.com/dorian/p/12377118.html
Copyright © 2011-2022 走看看