zoukankan      html  css  js  c++  java
  • restframework视图三部曲

    mixins的玩法

    from rest_framework import mixins
    from rest_framework import generics
    
    class AuthorView(mixins.CreateModelMixin, mixins.ListModelMixin, generics.GenericAPIView):
        # 初始化两个变量
        queryset = Author.objects.all()
        serializer_class = AuthorModelSerializer
    
        def get(self, request, *args, **kwargs):
            return self.list(request, *args, **kwargs)
    
        def post(self, request, *args, **kwargs):
            return self.create(request, *args, **kwargs)
    
    
    class AuthorDetailView(mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.DestroyModelMixin, generics.GenericAPIView):
        # 初始化两个变量
        queryset = Author.objects.all()
        serializer_class = AuthorModelSerializer
    
        def get(self, request, *args, **kwargs):
            return self.retrieve(request, *args, **kwargs)
    
        def put(self, request, *args, **kwargs):
            return self.update(request, *args, **kwargs)
    
        def delete(request, *args, **kwargs):
            return self.destroy(request, *args, **kwargs)

    generic的玩法

    from rest_framework import mixins
    from rest_framework import generics
    
    
    class AuthorView(generics.ListCreateAPIView):
        queryset = Author.objects.all()
        serializer_class = AuthorModelSerializer
    
    
    class AuthorDetailView(generics.RetrieveUpdateDestroyAPIView):
        queryset = Author.objects.all()
        serializer_class = AuthorModelSerializer

    终极玩法

    views.py

    from rest_framework import viewsets
    
    
    class AuthorViewSet(viewsets.ModelViewSet):
    
        queryset = Author.objects.all()
        serializer_class = AuthorModelSerializer

    urls.py

    # 方式一,自己手写
    urlpatterns = [
        url(r'^authors/$', views.AuthorViewSet.as_view({"get": "list", "post": "create"}), name="author_list"),
        url(r'^authors/(?P<pk>d+)/$', views.AuthorViewSet.as_view({"get": "retrieve", "put": "update", "delete": "destroy"}), name="author_detail"),
    ]
    
    
    # 方式二,针对上面的两条url的分发
    from rest_framework import routers
    routers = routers.DefaultRouter()
    routers.register("authors", views.AuthorViewSet)    # authors是url前缀
    urlpatterns = [
        url(r'', include(routers.urls)),    (等同于方式一的写法)
    ]
  • 相关阅读:
    php apc 安装
    apaache php 日记设计
    memcache windows64 位安装
    JavaScript的作用域与闭包
    怎样写一个简单的操作系统?
    php 关于锁的一些看法
    Windows版本Apache+php的Xhprof应用__[2]
    Windows版本Apache+php的Xhprof应用
    使用TortoiseGit对Git版本进行分支操作
    机器学习数据不均衡问题
  • 原文地址:https://www.cnblogs.com/sunch/p/9993633.html
Copyright © 2011-2022 走看看