drf 视图类、Content_type(数据库优化)
复习
""" 视图家族
1、View:将请求方式与视图类的同名方法建立映射,完成请求响应
2、APView:
1)View的所有功能;
2)重写as_view禁用csrf认证;
3)重写dispatch:请求、响应、渲染、异常、解析、三大认证
4)多了一堆类属性,可以完成视图类的局部配置
3、GenericAPIView:
1)APView的所有功能
2)三个方法:get_object()、get_queryset()、get_serializer()
3)三个属性:queryset、serializer_class、lookup_url_kwarg
4、mixins包:
1)五大工具类:RetrieveModelMixin(retrieve), ListModelMixin(list), CreateModelMixin(create), UpdateModelMixin(updata,partial_update), DestroyModelMixin(destroy)
2)六大工具方法:retrieve、list、create、update、partial_update、destroy
5、generics包:
1)一堆mixins工具类与GenericAPIView视图基类组合
6、ViewSetMixin
1)重写as_view(),完成请求方式与视图方法的自定义映射
as_view({'get': 'my_get'})
7、视图集基类:
ViewSet(ViewSetMixin, APIView):可以自定义映射关系的APIView
GenericViewSet(ViewSetMixin, GenericAPIView):可以自定义映射关系的GenericAPIView
8、常用Model视图集
1)ModelViewSet(mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
mixins.ListModelMixin,
GenericViewSet)
某一资源的六大操作视图集
2)ReadOnlyModelViewSet(mixins.RetrieveModelMixin,
mixins.ListModelMixin,
GenericViewSet)
某一资源的只读操作视图集
"""
Content_type
# 给Django中的所有模块中的所有表进行编号存储到content_type表中
# 应用一:权限表的权限是操作表的,所有在权限表中有一个content_type表的外键,标识该权限具体操作的是哪张表
# 应用二:价格策略
"""
Course:
name、type、days、price、vip_type
基础 免费课 7 0
中级 学位课 180 69
究极 会员课 360 至尊会员
Course:
name、type、days、content_type_id
基础 免费课 7 null
中级 学位课 180 1
究极 会员课 360 2
app01_course_1
id、price
app01_course_2
id vip_type
content_type表(Django提供)
id、app_label、model
1 app01 course_1
2 app01 course_2
"""
知识点总结
"""
1、认证、权限、频率的工作原理
基础哪个类、重写哪个方法、方法的实现体要完成什么事
2、自定义User表
继承AbstractUser、配置AUTH_USER_MODEL、配置admin(UserAdmin密文操作密码)
3、一个需要登录后的群查接口UserList、一个获取LoginAPIView成功的Token
4、LoginAPIView要根据请求的usr、pwd交给序列化类,全局校验得到 user、token
签发token的算法
5、自定义认证类,校验token
校验token的算法
6、自定义权限类
指定权限规则
7、登录接口必须完成所有认证权限局部禁用,权限接口在权限类中局部配置自定义认证权限类(或在全局配置)
"""
A作业(必做)
"""
1、整理今天所学知识点
核心:签发token和校验token算法,自定义认证类和权限类,视图类配置自定义认证类和权限类
2、新建项目,实现LoginAPIView,完成账号密码登录签发token给前台
3、基于User表,写一个 个人中心接口(这个接口可以访问用户所有信息,密码就用八个#填充),该接口需要登录就可以访问(自定义认证类完成token校验,权限类系统有提供),不同的用户访问得到的是该用户的详情信息
"""
B作业(选做)
"""
1、基于A作业需求,写一个修改用户密码的接口,修改密码后,用新密码测试登录
"""

浙公网安备 33010602011771号