• 视图家族


    视图家族

    **1.View: **

    1. 将请求方式与视图类的同名方法建立映射,完成请求响应

    2.APIView

    1. 拥有View的所有功能
    2. 重写as_view禁用csrf认证
    3. 重写dispatch: 请求、响应、渲染、异常、解析、三个认证
    4. 多了一堆类属性,可以完成试图类地局部配置
    eg:
    	class StudentAPIView(APIView):
            def get(self, request, *args, **kwargs):
            
                stu_query = models.Student.objects.all()
                stu_ser = serializers.StudentModelSerializer(stu_query, many=True)
                
                return Response(stu_ser.data)
    

    3.GenericAPIView:

    1. 拥有APIView的所有功能
    2. 三个方法: get_object()、get_queryset()、get_serializer()
    3. 三个属性: queryset、serializer_class、lookup_url_kwargs
    eg:
    	class StudentGenericAPIView(GenericAPIView):
            queryset = models.Student.objects.all()
            serializer_class = serializers.StudentModelSerializer
            
            def get(self, request, *args, **kwargs):
            
                # stu_query = models.Student.objects.all()
                stu_query = self.get_queryset()
                
                # stu_ser = serializers.StudentModelSerializer(stu_query, many=True)
                stu_ser = self.get_serializer(stu_query, many=True)
                
                return Response(stu_ser.data)
    
    	
    

    4.mixins包:

    1. 五大工具类: RetrieveModelMinxin , ListModelMixin , CreateModelMixin , UpdateModelMixin,
    2. 六大工具方法:retrieve , list , create, update , partial_update , destroy
    from rest_framework import mixins
    class StudentMixinGenericAPIView(mixins.ListModelMixin, mixins.CreateModelMixin, GenericAPIView):
        queryset = models.Student.objects.all()
        serializer_class = serializers.StudentModelSerializer
        
        def get(self, request, *args, **kwargs):
            return self.list(request, *args, **kwargs)
    
        def post(self, request, *args, **kwargs):
            return self.create(request, *args, **kwargs)
    

    5.generics包:

    1. 一堆mixins工具类与GenericAPIView视图基类组合
    from rest_framework.generics import CreateAPIView, RetrieveAPIView, ListAPIView, UpdateAPIView, DestroyAPIView
    
    class StudentMixinAPIView(CreateAPIView, RetrieveAPIView, ListAPIView, UpdateAPIView, DestroyAPIView):
        queryset = models.Student.objects.all()
        serializer_class = serializers.StudentModelSerializer
        # url中单查,不一定必须提供主键,提供一切唯一键的字段名均可
        lookup_url_kwarg = 'id'
    
        # 有删除需求的接口继承DestroyAPIView,重写destroy完成字段删除
        def destroy(self, request, *args, **kwargs):
            pass
    
    

    6.ViewSetMixin

    1. 重写as_view(), 完成请求方式与视图方法的自定义映射
    2. 例子: as_view({'get': 'my_get'})
    # 视图集
    from rest_framework.viewsets import ModelViewSet
    class StudentModelViewSet(ModelViewSet):
        queryset = models.Student.objects.all()
        serializer_class = serializers.StudentModelSerializer
    
        def my_post(self, request, *args, **kwargs):
            return Response('my post ok')  # 需要在url中做映射
    
    

    7.视图集基类:

    1. ViewSet(ViewSetMixin, APIView): 可以自定义映射关系的APIView
    2. GeneriViewSet(ViewSetMixin, GenericAPIView): 可以自定义映射关系的GenericAPIView

    8.常用Model视图集

    1. ModelViewSet(mixins.CreateModelMixin,
      mixins.RetrieveModelMixin,
      mixins.UpdateModelMixin,
      mixins.DestroyModelMixin,
      mixins.ListModelMixin,
      GenericViewSet)
      (某一资源的六大操作视图集)

    2. ReadOnlyModelViewSet(mixins.RetrieveModelMixin,
      mixins.ListModelMixin,
      GenericViewSet)
      (某一资源的只读操作视图集)

  • 相关阅读:
    第九届蓝桥杯省赛c/c++真题明码题解答案,另类excel解法思路
    Windows下将Python源代码.py文件封装成exe可执行文件方法
    windows下python自带的pip安装速度过慢解决方案
    解决:Errors were encountered while processing
    ubuntu 安装 caffe 解决://home/xiaojie/anaconda/lib/libpng16.so.16:对‘inflateValidate@ZLIB_1.2.9’未定义的引用
    ubuntu安装caffe 解决:build_release/tools/caffe: error while loading shared libraries: libcudart.so.8.0: cannot open shar
    ubuntu 禁止内核更新
    ubutun 中notebook出现 Permission denied: Untitled.ipynb
    ubuntu下anaconda使用jupyter notebook加载tensorflow、pytorch
    ubuntu下用anaconda快速安装 pytorch
  • 原文地址:https://www.cnblogs.com/kangwy/p/11953920.html
Copyright © 2020-2023  润新知