zoukankan      html  css  js  c++  java
  • Django REST framework视图

    混合类阶段(封装2次)

    路由:

    url(r'school/$', views.SchoolView.as_view()),
    url(r'school/(?P<pk>d+)/$', views.SchoolDetail.as_view()),

    序列化:

    
    
    from rest_framework import serializers
    from app01 import models
    class AuthorModelSerializers(serializers.ModelSerializer):
        class Meta:
            model = models.Author
            fields = "__all__"

    视图:

    查询所有:

    from rest_framework import mixins
    from rest_framework import generics
    
    
    class AuthorView(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView):
        # queryset serializer 这两个方法一定要定义成这个不然取不到值
        queryset = models.Author.objects.all()
        serializer_class = AuthorModelSerializers
    
        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 AuthorDetaiView(mixins.RetrieveModelMixin, mixins.DestroyModelMixin, mixins.UpdateModelMixin,
                          generics.GenericAPIView):
        # queryset serializer 这两个方法一定要定义成这个不然取不到值
        queryset = models.Author.objects.all()
        serializer_class = AuthorModelSerializers
    
        def get(self, request, *args, **kwargs):
            return self.retrieve(request, *args, **kwargs)
    
        def delete(self,request,*args,**kwargs):
            return self.destroy(request,*args,**kwargs)
    
        def put(self,request,*args,**kwargs):
            return self.update(request,*args,**kwargs)

    使用通用的基于类的视图(封装第3次)

    路由:

    url(r'school/$', views.SchoolView.as_view()),
    url(r'school/(?P<pk>d+)/$', views.SchoolDetail.as_view()),

    序列化:

    from rest_framework import serializers
    from app01 import models
    class AuthorModelSerializers(serializers.ModelSerializer): class Meta: model = models.Author fields = "__all__"

    视图:

    from rest_framework import mixins
    from rest_framework import generics
    
    
    # 封装了3层
    class AuthorView(generics.ListCreateAPIView):
        # queryset serializer 这两个方法一定要定义成这个不然取不到值
        queryset = models.Author.objects.all()
        serializer_class = AuthorModelSerializers

    使用视图集

    路由:

      re_path('^authors/$', views.AuthorView.as_view({"get": "list", "post": "create"})),
      re_path('^author/(?P<pk>d+)/$',views.AuthorDetaiView.as_view({"get": "retrieve", "put": "update", "delete": "destroy"})),
        

    序列化:

    from rest_framework import serializers
    from app01 import models
    class AuthorModelSerializers(serializers.ModelSerializer):
        class Meta:
            model = models.Author
            fields = "__all__"

    视图:

    # 封装了3层
    class AuthorView(viewsets.ModelViewSet):
        # queryset serializer 这两个方法一定要定义成这个不然取不到值
        queryset = models.Author.objects.all()
        serializer_class = AuthorModelSerializers

    高级路由

    其他同上:

    路由

    from rest_framework.routers import DefaultRouter
    
    router = DefaultRouter()
    router.register(r'school', views.SchoolView)
    urlpatterns += router.urls

    默认路由

    from django.contrib import admin
    from django.urls import path,re_path
    from app01 import views
    from rest_framework import  routers
    from django.conf.urls import url,include
    
    
    routers = routers.DefaultRouter()
    routers.register("authors", views.AuthorModelView)
    
    
    urlpatterns = [
        re_path(r'^',include(routers.urls)),
    
    ]
  • 相关阅读:
    jsoup
    【伪装位置神器】神行者AnyLocation 1.3.0001可用于微信,陌陌
    MD5 哈希等各种加密方式 都是对这个对象进行各种运算, 然后得出1个字符串
    【html】param 以及 embed 的有关 flash 属性详解
    【css】绝对定位的元素在 ie6 下不显示
    【javascript】浮点数运算问题分析及解决方法
    【jquery】邮箱自动补全 + 上下翻动
    【javascript】设为首页——setHome
    【javascript】js 检验密码强度
    【jquery】jquery 自定义滚动条
  • 原文地址:https://www.cnblogs.com/Rivend/p/12057803.html
Copyright © 2011-2022 走看看