drf序列化大总结
一、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序列化大总结的更多相关文章
- DRF 序列化组件
Serializers 序列化组件 Django的序列化方法 class BooksView(View): def get(self, request): book_list = Book.objec ...
- python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)
昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...
- Django的DRF序列化方法
安装rest_framework -- pip install djangorestframework -- 注册rest_framework序列化 -- Python--json -- 第一版 用v ...
- drf序列化器与反序列化
什么是序列化与反序列化 """ 序列化:对象转换为字符串用于传输 反序列化:字符串转换为对象用于使用 """ drf序列化与反序列化 &qu ...
- python 全栈开发,Day95(RESTful API介绍,基于Django实现RESTful API,DRF 序列化)
昨日内容回顾 1. rest framework serializer(序列化)的简单使用 QuerySet([ obj, obj, obj]) --> JSON格式数据 0. 安装和导入: p ...
- drf序列化及反序列化
假如把drf看做一个汉堡包,我们之前讲的模块属于汉堡包前面的盖盖(请求模块.渲染模块)和底底(异常模块.解析模块.响应模块),但是真正中间的夹心没有讲,那么今天我就和大家来看一下汉堡包的夹心(序列化及 ...
- drf序列化和反序列化
目录 drf序列化和反序列化 一.自定义序列化 1.1 设置国际化 二.通过视图类的序列化和反序列化 三.ModelSerializer类实现序列化和反序列化 drf序列化和反序列化 一.自定义序列化 ...
- DRF 序列化组件 模型层中参数补充
一. DRF序列化 django自带有序列化组件,但是相比rest_framework的序列化较差,所以这就不提django自带的序列化组件了. 首先rest_framework的序列化组件使用同fr ...
- 4)drf序列化组件 Serializer(偏底层)、ModelSerializer(重点)、ListModelSerializer(辅助群改)
知识点:Serializer(偏底层).ModelSerializer(重点).ListModelSerializer(辅助群改) 一.Serializer 偏底层 一般不用 理解原理 1.序列化准备 ...
随机推荐
- VMware Workstation CentOS7 Linux 学习之路(1)--系统安装
前言 很早就想学习Linux了,出去面试很多家公司都问会不会Linux,都很尴尬,一直没学过Linux,在网上也看过很多资料,也安装了VM,自己摸索着学习Linux,之前看网上的一些命令一顿操作, ...
- 关于爬虫的日常复习(7)—— DOM操作及selenium库
- NumPy排序
numpy.sort()函数 该函数提供了多种排序功能,支持归并排序,堆排序,快速排序等多种排序算法 使用numpy.sort()方法的格式为: numpy.sort(a,axis,kind,orde ...
- ii
char a[10], b[10], c[10], d[10],e[10],f[10],g[10],h[10]; scanf("%s %s %s %s", a, b, c, d); ...
- 玩转Django2.0---Django笔记建站基础六(模型与数据库)
第六章 模型与数据库 Django对各种数据库提供了很好的支持,包括:PostgreSQL.MySQL.SQLite和Oracle,而且为这些数据库提供了统一的调用API,这些API统称为ORM框架. ...
- 机器学习环境配置系列二之cuDNN
1.下载cuDNN 前往: NVIDIA cuDNN home page. 进入下载 勾选Nvidia的协议复选框(流氓的选择,不勾选不能下载) 选择与安装的cuda版本一致的cudnn进行下载. 2 ...
- svn subvesion Branch Merge
- SpringBoot_Web开发_定制错误数据
SpringBoot默认的错误处理机制 默认效果: 1).浏览器,返回一个默认的错误页面 2).如果是其他客户端,默认响应一个json数据 原理: 可以参照ErrorMvcAutoConfig ...
- Java中的Swap,如何实现?
程序员都知道,在C/C++里面交换值的方法: void swap(int &a,int &b) { int temp; temp=a; a=b; b=temp; } 但是在Java中这 ...
- Centos 7中安装svn服务器,史上最详细
最近上头安排了帮客户安装svn服务器,用了两种方式安装,yum命令安装,快速简洁容易上手,但是源码安装就比较繁琐,两种方式都试了一下,yum命令基本一个多小时就安装完了,但是源码安装弄了我两天的时间, ...