视图
-两个视图基类 APIView,GenericAPIView(继承APIView):涉及到数据库和序列化类的操作,尽量用GenericAPIView
-5个视图扩展类(父类都是object)
CreateModelMixin:create
DestroyModelMixin:destory
ListModelMixin
RetrieveModelMixin
UpdateModelMixin
-9个视图子类(GenericAPIView+上面5个视图扩展类中的一个或多个)
RetrieveUpdateDestroyAPIView
CreateAPIView
RetrieveAPIView
DestroyAPIView
RetrieveUpdateAPIView
ListCreateAPIView
UpdateAPIView
ListAPIView
RetrieveDestroyAPIView
-视图集
-ModelViewSet:5大接口都有了
-ReadOnlyModelViewSet:获取一条和获取多条的接口
-GenericViewSet:ViewSetMixin+GenericAPIView
ViewSet:ViewSetMixin+APIView
ViewSetMixin:类重写了as_view,路由配置就变样了
路由
-基本配置:跟之前一样
-有action的:必须继承ViewSetMixin
-自动生成:DefaultRouter和SimpleRouter
-导入,实例化得到对象,注册多个,对象.urls(自动生成的路由)
-路由相加urlpatterns+=router.urls/include:path('', include(router.urls))
-视图类中自己定义的方法,如何自动生成路由
-在自己定义的方法上加装饰器(action)
-两个参数methods=[GET,POST],表示这两种请求都能接受
-两个参数detail=True,表示生成带pk的连接
三大认证
-认证组件:校验用户是否登录
-写一个认证类,继承BaseAuthentication,重写authenticate,内部写认证逻辑,认证通过返回两个值,第一个是user,认证失败,抛去异常
-全局使用,局部使用,局部禁用
-权限:校验用户是否有权限进行后续操作
-写一个类,继承BasePermission,重写has_permission,True和False
-全局使用,局部使用,局部禁用
-频率:限制用户访问频次
-写一个类,继承SimpleRateThrottle,重写get_cache_key,返回什么,就以谁做限制,scop=luffy字段,需要跟setting中的key对应 luffy:3/h(一小时访问三次)
-全局配置,局部配置,局部禁用
-需求:发送短信验证码的接口,一分钟只能发送一次,局部使用,配在视图类上