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)),    (等同于方式一的写法)
    ]
  • 相关阅读:
    struct{} //长篇更新
    channel //长篇更新
    切片 //长篇更新
    引用
    核心:数据篇
    ARM指令解析
    arm寄存器解析
    Java-Selenium,获取下拉框中的每个选项的值,并随机选择某个选项
    log4j:WARN No appenders could be found for logger (org.springframework.web.context.ContextLoader).
    eclipse安装springsource-tool-suite遇到的问题及解决方案
  • 原文地址:https://www.cnblogs.com/sunch/p/9993633.html
Copyright © 2011-2022 走看看