一、mixins
1.首先介绍mixins,mixins里面创建了许多的方法,list、retrieve、updata、destroy等方法,都返回的是Response
二、generics
- 有基本的GenericsAPIView 类,里面都是加了一些的方法和参数,这里只是继承了drf的APIView,APIView又继承了django的View
- 除了基本的GenericsAPIView类,其他类都是继承mixins的类和GenericsAPIView类,并将mixins类里面的方法和http请求的方法(GET,POST,PUT,DELETE等)结合起来,例如将get方法和mixins的类里面的list方法结合起来
- generics起到了将mixins类里面的方法和http请求的方法结合起来的作用
三、viewsets
- viewsets也是在到它本身的基本的ViewSetMixin类里面加了更多的功能到方法里,GenericViewSet类继承了viewsets基本的ViewSetMixin类和 generics的GenericAPIView类,但是并没有将这些类里面的方法与http的方法绑定起来
- 通过在urls.py中配置,就可以绑定
goods_list = GoodsListViewSet.as_view({
'get': 'list',
})
urlpatterns = [
url(r'goods/$', goods_list, name='goods_list'),
]
四、router
- 当我们的系统加大,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)),
]
- 在router里面它会将我们所需要的list方法,create方法都会自动帮我们绑定到http的方法上面,我们后续所需要的url,只需要这样配置就行了,只需注册就行了
router.register(r'goods', GoodsListViewSet)