一、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)前台接口权限:三大认证
'''

drf序列化大总结的更多相关文章

  1. DRF 序列化组件

    Serializers 序列化组件 Django的序列化方法 class BooksView(View): def get(self, request): book_list = Book.objec ...

  2. python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)

    昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...

  3. Django的DRF序列化方法

    安装rest_framework -- pip install djangorestframework -- 注册rest_framework序列化 -- Python--json -- 第一版 用v ...

  4. drf序列化器与反序列化

    什么是序列化与反序列化 """ 序列化:对象转换为字符串用于传输 反序列化:字符串转换为对象用于使用 """ drf序列化与反序列化 &qu ...

  5. python 全栈开发,Day95(RESTful API介绍,基于Django实现RESTful API,DRF 序列化)

    昨日内容回顾 1. rest framework serializer(序列化)的简单使用 QuerySet([ obj, obj, obj]) --> JSON格式数据 0. 安装和导入: p ...

  6. drf序列化及反序列化

    假如把drf看做一个汉堡包,我们之前讲的模块属于汉堡包前面的盖盖(请求模块.渲染模块)和底底(异常模块.解析模块.响应模块),但是真正中间的夹心没有讲,那么今天我就和大家来看一下汉堡包的夹心(序列化及 ...

  7. drf序列化和反序列化

    目录 drf序列化和反序列化 一.自定义序列化 1.1 设置国际化 二.通过视图类的序列化和反序列化 三.ModelSerializer类实现序列化和反序列化 drf序列化和反序列化 一.自定义序列化 ...

  8. DRF 序列化组件 模型层中参数补充

    一. DRF序列化 django自带有序列化组件,但是相比rest_framework的序列化较差,所以这就不提django自带的序列化组件了. 首先rest_framework的序列化组件使用同fr ...

  9. 4)drf序列化组件 Serializer(偏底层)、ModelSerializer(重点)、ListModelSerializer(辅助群改)

    知识点:Serializer(偏底层).ModelSerializer(重点).ListModelSerializer(辅助群改) 一.Serializer 偏底层 一般不用 理解原理 1.序列化准备 ...

随机推荐

  1. 牛客暑期ACM多校 第七场

    链接:https://www.nowcoder.com/acm/contest/145/C来源:牛客网 C .题目描述 A binary string s of length N = 2n is gi ...

  2. border-radius属性失效了Ծ‸Ծ

    .btn-circle { width: 30px; height: 30px; text-align: center; padding: 4px ; font-size: 16px; font-we ...

  3. lvs+keepalived部署k8s v1.16.4高可用集群

    一.部署环境 1.1 主机列表 主机名 Centos版本 ip docker version flannel version Keepalived version 主机配置 备注 lvs-keepal ...

  4. JMeter——jmx脚本文件解析

    <!--Jmeter版本信息--> <?xml version="1.0" encoding="UTF-8"?> <jmeterT ...

  5. Java单体应用 - Markdown - 01.简介

    原文地址:http://www.work100.net/training/monolithic-markdown.html 更多教程:光束云 - 免费课程 简介 序号 文内章节 视频 1 概述 2 特 ...

  6. spring-cloud-gateway报错

    2019-08-13 09:41:19.216 WARN [-,,,] 10084 --- [ main] ConfigServletWebServerApplicationContext : Exc ...

  7. UVA 最大面积最小三角形剖分

    点击打开题目 题目大意: 以顺时针或逆时针给出一个简单多边形的n个点的坐标,用n-2条互不相交的,且与边不相交的对角线,分成n-2个三角形,要求其中最大三角形的面积最小 开始还汪星人咬乌龟,无从下口, ...

  8. CSS-14-浮动

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. CSS-02-css的三种基础选择器

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  10. liberty | 在IDEA整合Springboot与IBM liberty

    在IDEA整合Springboot与IBM liberty 简介 Liberty 是一款全新的轻量级应用服务器,它将用户的良好开发体验作为最主要的出发点.其主要特点和内容包括: 高模块化--该功能允许 ...