zoukankan      html  css  js  c++  java
  • 关于drf里面的generics、mixins、viewsets、router的区别

    一、mixins

    1.首先介绍mixins,mixins里面创建了许多的方法,list、retrieve、updata、destroy等方法,都返回的是Response
    在这里插入图片描述

    二、generics

    1. 有基本的GenericsAPIView 类,里面都是加了一些的方法和参数,这里只是继承了drf的APIView,APIView又继承了django的View
    2. 除了基本的GenericsAPIView类,其他类都是继承mixins的类和GenericsAPIView类,并将mixins类里面的方法和http请求的方法(GET,POST,PUT,DELETE等)结合起来,例如将get方法和mixins的类里面的list方法结合起来
      在这里插入图片描述
    3. generics起到了将mixins类里面的方法和http请求的方法结合起来的作用

    三、viewsets

    1. viewsets也是在到它本身的基本的ViewSetMixin类里面加了更多的功能到方法里,GenericViewSet类继承了viewsets基本的ViewSetMixin类和 generics的GenericAPIView类,但是并没有将这些类里面的方法与http的方法绑定起来在这里插入图片描述
    2. 通过在urls.py中配置,就可以绑定
    goods_list = GoodsListViewSet.as_view({
        'get': 'list',
    })
    
    urlpatterns = [
        url(r'goods/$', goods_list, name='goods_list'),
    ]
    

    四、router

    1. 当我们的系统加大,url会越来越多,上面的viewsets中的urls.py中配置会越来越多,不便于我们管理,所以引入了router进行管理在这里插入图片描述
      例子:
    from django.urls import path, include
    from rest_framework.routers import DefaultRouter
    from goods.views import GoodsListViewSet
    
    router = DefaultRouter()
    router.register(r'goods', GoodsListViewSet)
    
    urlpatterns = [
        path('', include(router.urls)),
    ]
    
    1. 在router里面它会将我们所需要的list方法,create方法都会自动帮我们绑定到http的方法上面,我们后续所需要的url,只需要这样配置就行了,只需注册就行了
    router.register(r'goods', GoodsListViewSet)
    
  • 相关阅读:
    凸包模板
    F
    luogu P1220 关路灯
    [国家集训队]小Z的袜子
    [AHOI2009]维护序列
    luogu P3373 【模板】线段树 2
    [国家集训队]数颜色 / 维护队列
    luogu P3393 逃离僵尸岛
    [Usaco2005 Mar]Out of Hay 干草危机
    [USACO07NOV]牛栏Cow Hurdles
  • 原文地址:https://www.cnblogs.com/hjjjjh/p/13251473.html
Copyright © 2011-2022 走看看