1. '''
  2. 1)APIView的请求生命周期
  3. as_view():路由配置,禁用csrf
  4. dispatch():请求分发,请求解析、三大认证、异常处理、响应渲染
  5. request._request、request.query_params、request.data、request.META(请求头等诸多配置)
  6. '''
  1. '''
  2. i)视图类中使用序列化
  3. serializer = UserModelSerializer(
  4. instance="对象(们)",
  5. data="数据(们)",
  6. many=False|True, # 与数据或对象配套,代表操作的是否是多个
  7. partial=False|True, # 运用在局部修改中,所以校验可以选填(required=False)
  8. context={'request': request} # 视图、序列化传参
  9. )
  10. serializer.is_valid(raise_exception=False|True) # 校验
  11. serializer.save() # 入库
  12. serializer.data # 序列化后的数据
  13. serializer.errors # 校验失败的信息
  14. '''
  1. '''
  2. model:关联的Model类
  3. fields:所以序列化与反序列化字段
  4. extra_kwargs:简单的校验规则
  5. exclude:除某些字段
  6. depth:连表深度
  7. '''
  1. '''
  2. validate_字段名:局部校验钩子
  3. validate:全局校验钩子
  4. '''
  1. '''
  2. create:增数据入库
  3. update:改数据入库
  4. 后期这两个方法可能会被重写:涉及一些字段加密解密处理、不仅仅是单表入库操作
  5. user = User.create()
  6. UserDetail.create(user_id=user.id)
  7. '''
  1. '''
  2. @property:在model类中自定义序列化字段
  3. 自定义字段 = serializers.字段类型(write_only=True, 其他规则):在serializer类中的自定义反序列化字段
  4. 系统字段 = serializers.字段类型(规则):覆盖字段,可以设置为只读、只写、可读可写
  5. 外键字段的字段类型:PrimaryKeyRalatedField
  6. '''
  1. '''
  2. 自定义ListSerializer子类,重写update方法
  3. 在相关ModelSerializer中用list_serializer_class配置进行关联
  4. '''
  1. '''
  2. 重(难)点:
  3. i)在视图类中初始化序列化类对象时的参数选择
  4. ii)指定好所有的序列化与反序列化字段
  5. iii)全局校验钩子的逻辑(难点)
  6. iv)是否要重写入库方法(难点)
  7. '''
  1. '''
  2. 两个基类:APIView、GenericAPIVAPIView
  3. APIView:禁用csrf、解析、认证、渲染...
  4. GenericAPIVAPIView:禁用csrf、解析、认证、渲染... + 三个属性三个方法
  5. 工具类:mixin包下的五个类,使用GenericAPIVAPIView的三个属性三个方法(过渡)
  6. 工具视图类:mixin包下的类 + GenericAPIVAPIView 的组合形成的类
  7. 配置三个属性 + 是否需要重写get、post等方法
  8. 视图集:ViewSetMixin重写as_view方法,可以自定义 请求方式 - 响应函数 的映射关系
  9. 配置三个属性 + mixin包下的类 + GenericViewSet
  10. ViewSet
  11. '''

SimpleRouter

  1. from django.conf.urls import url, include
  2. from . import views
  3. # 路由组件,必须配合视图集使用
  4. from rest_framework.routers import SimpleRouter
  5. router = SimpleRouter()
  6. # 以后就写视图集的注册即可:BookV3APIView和BookV4APIView都是视图集
  7. router.register('v3/books', views.BookV3APIView, 'book')
  8. router.register('v4/books', views.BookV4APIView, 'book')
  9. urlpatterns = [
  10. url('', include(router.urls))
  11. ]
  1. '''
  2. i)RBAC:Role-Based Access Control - 基于角色权限的认证规则
  3. 权限六表:用户表、分组表、权限表 + 三个关系表
  4. ii)auth六表是否需要重写或断关联
  5. 不需要
  6. iii)admin|xadmin|自定义 提供的后台管理项目
  7. iv)前台接口权限:三大认证
  8. '''

版权声明:本文为guyouyin123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/guyouyin123/p/12358457.html