• S11 day 95 RestFramework 之 视图


    1. 基于APIVIEW视图序列化

     

    我们会发现两个类有好多重复的代码.所以我们引入了GenericAPIView (继承了APIView)

    2.Generic ApiVIew和 ListModelMixin混合类

    url路由配置

        url(r'school/$', views.SchoolView.as_view(), name='article-detail'),
    from rest_framework.generics import GenericAPIView
    from rest_framework.mixins import ListModelMixin
    
    #学校视图(继承基础工具类阶段)
    class SchoolView(GenericAPIView,ListModelMixin): ''' GenericAPIView 只需要配置 queryset和serialize_class ''' queryset = models.School.objects.all() serializer_class = app01_serializer.SchoolSerializer def get(self,request,*args,**kwargs): return self.list(request,*args,**kwargs)

    输出结果:

     3. GenetricAPIView + RetrieveMixin  获取一条数据

        url(r'^comment/(?P<pk>d+)/$', views.CommentDetailView.as_view()),
    from rest_framework.mixins import RetrieveModelMixin
    
    class CommentDetailView(GenericAPIView,RetrieveModelMixin):   #mixin混合类.
    
        queryset = models.Comment.objects.all()
        serializer_class =app01_serializer.CommentSerializer
    
        def get(self,request,pk):
            return self.retrieve(request,pk)

     输出结果:

     4. GenericApiView + Mixin 增删改查.

    # 3. 评论详情操作某一条数据
    
    from rest_framework.mixins import RetrieveModelMixin,DestroyModelMixin,UpdateModelMixin
    
    class CommentDetailView(GenericAPIView,RetrieveModelMixin,DestroyModelMixin,UpdateModelMixin):   #mixin混合类.
    
        queryset = models.Comment.objects.all()
        serializer_class =app01_serializer.CommentSerializer
    
      查: def
    get(self,request,pk): return self.retrieve(request,pk)
       def delete(self,request,pk):
    return self.destroy(request,pk) def perform_destory(self,instance): instance.delete()   改 def put(self,request,pk): return self.update(request,pk)

    输出结果:

    OK

    5.  ListCreateAPIView和RetreveUpdateDestory

    # 5 ListCreateAPIVIew 和RetreveUpdateDestory
    from rest_framework.generics import ListCreateAPIView,RetrieveUpdateDestroyAPIView

    class CommentView(ListCreateAPIView): #获取所有 , 添加.
    queryset = models.Comment.objects.all()
    serializer_class = app01_serializer.CommentSerializer

    class CommentDetailView(RetrieveUpdateDestroyAPIView): #改,查和删除
    queryset = models.Comment.objects.all()
    serializer_class = app01_serializer.CommentSerializer

    输出结果:

     6. GenericViewSet   ( ListCreateAPIView和RetreveUpdateDestory

    URL

        url(r'^comment/$', views.CommentView.as_view({
            "get":"list",
            "post":"create"
        })),
    
        url(r'^comment/(?P<pk>d+)/$', views.CommentView.as_view({
            "get":"retrieve",
            "put":"update",
            "delete":"destroy"
        })),
    from rest_framework.viewsets import ModelViewSet
    class CommentViewSet(ModelViewSet):
        queryset = models.Comment.objects.all()
        serializer_class = app01_serializer.CommentSerializer

     

  • 相关阅读:
    洛谷-P5729 【深基5.例7】工艺品制作
    洛谷-P5728 【深基5.例5】旗鼓相当的对手
    洛谷-P5727 【深基5.例3】冰雹猜想
    洛谷-P1720 月落乌啼算钱
    洛谷-P4956 [COCI2017-2018#6] Davor
    洛谷-P1075 质因数分解
    洛谷-P1420 最长连号
    洛谷-P1307 数字反转
    回调地址
    OAuth 2.0
  • 原文地址:https://www.cnblogs.com/mengbin0546/p/9409367.html
Copyright © 2020-2023  润新知