"""
1、APIView
as_view:禁用csrf
dispatch:请求、响应、解析、渲染、异常、三大认证
一系列类属性:全局局部配置
作用:drf最底层视图,所有视图类之间或间接继承该类,理论上可以完成一切接口需求
2、GenericAPIView
三个方法:get_queryset、get_serializer、get_object
三个属性:queryset、serializer_class、lookup_url_kwarg
作用:将与Model、Serializer以及确定唯一对象的key这些变化量交于用户自己配置,查询这些配置的逻辑封装成方法,得以复用;这样处理,使GenericAPIView类及其子类处理与Model相关的接口需求更方便
3、mixins
五个工具类:CreateModelMixin、Destroy、Update、Retrieve、List
六个工具方法:create、destroy、update、partial_update、retrieve、list
作用:将GenericAPIView的封装方法进行整合形参增删改查的业务逻辑
4、ListAPIView...
就是不同种类不同个数的mixins中的类与GenericAPIView类的组合,形成的子类
作用:用户继承相应的工具视图类,进行queryset、serializer_class、lookup_url_kwarg配置,就可以完成对应功能的接口
5、视图集
ViewSetMixin类重写了as_view:
1) 局部禁用csrf,同APIView类的as_view
2) 在此基础上,还接收外界的{}参数,存在actions中,{}参数就是让用户自定义请求的映射关系
{'get': 'my_get'} => get请求会交给视图类的my_get函数进行处理
ViewSet:能自定义映射的APIView子类
GenericViewSet:能自定义映射的GenericAPIView子类
6、路由组件
from django.conf.urls import url, include
from . import views
from rest_framework.routers import SimpleRouter
router = SimpleRouter()
router.register('books', views.BookGenericViewSet, basename='book')
urlpatterns = [
url(r'', include(router.urls))
]
"""