一、APIView的请求生命周期

'''
1)APIView的请求生命周期
as_view():路由配置,禁用csrf
dispatch():请求分发,请求解析、三大认证、异常处理、响应渲染
request._request、request.query_params、request.data、request.META(请求头等诸多配置)
'''

二、序列化组件

视图类中使用序列化

'''
i)视图类中使用序列化
serializer = UserModelSerializer(
instance="对象(们)",
data="数据(们)",
many=False|True, # 与数据或对象配套,代表操作的是否是多个
partial=False|True, # 运用在局部修改中,所以校验可以选填(required=False)
context={'request': request} # 视图、序列化传参
)
serializer.is_valid(raise_exception=False|True) # 校验
serializer.save() # 入库
serializer.data # 序列化后的数据
serializer.errors # 校验失败的信息
'''

Meta配置类中的配置

'''
model:关联的Model类
fields:所以序列化与反序列化字段
extra_kwargs:简单的校验规则
exclude:除某些字段
depth:连表深度
'''

自定义校验规则

'''
validate_字段名:局部校验钩子
validate:全局校验钩子
'''

入库方法

'''
create:增数据入库
update:改数据入库
后期这两个方法可能会被重写:涉及一些字段加密解密处理、不仅仅是单表入库操作
user = User.create()
UserDetail.create(user_id=user.id)
'''

自定义字段

'''
@property:在model类中自定义序列化字段
自定义字段 = serializers.字段类型(write_only=True, 其他规则):在serializer类中的自定义反序列化字段
系统字段 = serializers.字段类型(规则):覆盖字段,可以设置为只读、只写、可读可写
外键字段的字段类型:PrimaryKeyRalatedField
'''

如果有群改操作

'''
自定义ListSerializer子类,重写update方法
在相关ModelSerializer中用list_serializer_class配置进行关联
'''

重(难)点

'''
重(难)点:
i)在视图类中初始化序列化类对象时的参数选择
ii)指定好所有的序列化与反序列化字段
iii)全局校验钩子的逻辑(难点)
iv)是否要重写入库方法(难点)
'''

三、视图家族

'''
两个基类:APIView、GenericAPIVAPIView
APIView:禁用csrf、解析、认证、渲染...
GenericAPIVAPIView:禁用csrf、解析、认证、渲染... + 三个属性三个方法 工具类:mixin包下的五个类,使用GenericAPIVAPIView的三个属性三个方法(过渡) 工具视图类:mixin包下的类 + GenericAPIVAPIView 的组合形成的类
配置三个属性 + 是否需要重写get、post等方法 视图集:ViewSetMixin重写as_view方法,可以自定义 请求方式 - 响应函数 的映射关系
配置三个属性 + mixin包下的类 + GenericViewSet
ViewSet
'''

四、路由组件

SimpleRouter

from django.conf.urls import url, include
from . import views
# 路由组件,必须配合视图集使用
from rest_framework.routers import SimpleRouter
router = SimpleRouter() # 以后就写视图集的注册即可:BookV3APIView和BookV4APIView都是视图集
router.register('v3/books', views.BookV3APIView, 'book')
router.register('v4/books', views.BookV4APIView, 'book') urlpatterns = [
url('', include(router.urls))
]

五、权限认证

'''
i)RBAC:Role-Based Access Control - 基于角色权限的认证规则
权限六表:用户表、分组表、权限表 + 三个关系表 ii)auth六表是否需要重写或断关联
不需要 iii)admin|xadmin|自定义 提供的后台管理项目 iv)前台接口权限:三大认证
'''

最新文章

  1. 数据库一次性插入10w条数据,怎么插入效率快
  2. 002_base64的编码实现
  3. javascript正则表达式介绍
  4. USB Device Finder
  5. [Express] Level 3: Massaging User Data
  6. java 线程之间通信以及notify与notifyAll区别。
  7. Jenkins启动、停止脚本
  8. Jenkis Editable Email Notification Plugin 使用介绍
  9. Anaconda安装及使用
  10. Windows环境下Anaconda安装TensorFlow的避坑指南
  11. c指针存放的是常量的地址
  12. Docker Swarm volume 数据持久化
  13. controller向layout传值
  14. Jetty部署
  15. 记账本微信小程序开发一
  16. 怎样导入现有的NiosII工程
  17. Expo大作战(十)--expo中的App Icon,expo中的Assets,expo中的ErrorHandling错误处理
  18. bootstrap datepicker含有hasDatepicker无法弹出
  19. 1092. To Buy or Not to Buy (20)-map
  20. 安装yeoman报没有权限的错误

热门文章

  1. 存储过程带参数和sqlcommand
  2. Oracle Autonomous Health Framework (AHF) 解读
  3. openjudge 拯救公主
  4. python中的dumps和loads区别
  5. spring cloud oauth2搭建认证中心与资源中心
  6. mysqldump 备份与恢复操作记录
  7. Java 分布式框架面试题合集
  8. react FileReader读取TXT文件并保存 split切割字符串 map()分别渲染切割后的数组内的所有字符串
  9. 龙良曲pytorch学习笔记_03
  10. 练习2-15 求简单交错序列前N项和 (15 分)