baseresponse响应类_内部类、响应类Response、序列化基类、反序列化、全局局部钩子...

一、内部类

1、概念:将类定义在一个类的内部,被定义的类就是内部类

2、特点:内部类及内部类的所以名称空间,可以直接被外部类访问的

3、 应用:通过内部类的名称空间,给外部类额外拓展一些特殊的属性(配置),典型的Meta内部类 - 配置类

class Book(model.Model):

class Meta:

db_model = "owen_book"                # 配置自定义表名

class BookSerializer(serializers.ModelSerializer):

class Meta:

model = "Book"                             # 配置序列化类绑定的Model表

结果:

列子:特点:内部类及内部类的所以名称空间,可以直接被外部类访问的

二、DRF响应类:Response

1、源码:

def __init__(self, data=None, status=None, template_name=None, headers=None, exception=False, content_type=None):

pass

2、源码中的参数:

data:响应的数据 - 空、字符串、数字、列表、字段、布尔

status:网络状态码

template_name:drf说自己也可以支持前后台不分离返回页面,但是不能和data共存(不会涉及)

headers:响应头(不用刻意去管)

exception:是否是异常响应(如果是异常响应,可以赋值True,没什么用)

content_type:响应的结果类型(如果是响应data,默认就是application/json,所有不用管)

3、常见使用

return Response(

data={

'status': 0,

'msg': 'ok',

'result': '正常数据'

}

)

return Response(

data={

'status': 1,

'msg': '客户端错误提示',

},

status=status.HTTP_400_BAD_REQUEST,

exception=True

)

响应类源码:最重要的是data和status

例子:设置网络状态码

结果:

三、序列化基类(BaseSerializer)

1、源码:

def __init__(self, instance=None, data=empty, **kwargs):

pass

2、源码中的参数:

instance:是要被赋值对象的 - 对象类型数据赋值给instance

data:是要被赋值数据的 - 请求来的数据赋值给data

kwargs:内部有三个属性:many、partial、context

many:操作的对象或数据,是单个的还是多个的

partial:在修改需求时使用,可以将所有校验字段required校验规则设置为False

context:用于视图类和序列化类直接传参使用

图片:

3、 常见使用

# 单查接口

UserModelSerializer(instance=user_obj)

# 群查接口

UserModelSerializer(instance=user_query, many=True)

# 增接口

UserModelSerializer(data=request.data)

# 整体改接口

UserModelSerializer(instance=user_obj, data=request.data)

# 局部改接口

UserModelSerializer(instance=user_obj, data=request.data, partial=True)

# 删接口,用不到序列化类

四、反序列化

1、views.py文件中

classUserAPIView(APIView):def post(self, request, *args, **kwargs):#单增

#1)将前台请求的数据交给序列化类处理

#2)序列化类执行校验方法,对前台提交的所有数据进行数据校验:校验失败就是异常返回,成功才能继续

#3)序列化组件完成数据入库操作,得到入库对象

#4)响应结果给前台

serializer = serializers.UserModelSerializer(data=request.data)ifserializer.is_valid():#校验成功 => 入库 => 正常响应

obj =serializer.save()returnResponse({'status': 0,'msg': 'ok','result': '新增的那个对象'}, status=status.HTTP_201_CREATED)else:#校验失败 => 异常响应

returnResponse({'status': 1,'msg': serializer.errors,

}, status=status.HTTP_400_BAD_REQUEST)

2、is_valid() 源码:

断言(assert): 其实就是等于  if...raise error

3、.save() 源码:

4、提交post请求:

错误原因:

5、serializer 反序列化 分析:

第一波分析:

第二波分析

第三波 自定义反序列化字段

01、自定义只写字段,在serializer类中声明,必须手动明确write_only

02、自定义只读字段,在model类中用@property声明,默认就是read_only

6、全部、局部钩子(用来筛选条件的)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python模块名限定_python 正则表达式 匹配 ?的使用 限定符 sys.re模块

特殊字符:注意\b是匹配单词而非字符串的开始和结束; \w不能匹配汉字限定符放在匹配符的后边2 括号分组:(\d\d\d){2} #有括号匹配6位数字\d\d\d{2} #没有括号匹配4位数字3 ?的使用4 sys.re模块的常用函数表:查找、分隔、…

计算机不能进入桌面,电脑开机无法进入桌面,请高手解决。

该故障是Windows XP操作系统关机故障中最容易出现的故障。造成该故障的原因可能有以下几方面原因:系统设置在添乱Windows XP默认情况下,当系统出现错误时会自动重新启动,这样当用户关机时,如果关机过程中系统出现错误就会重新启动…

太阳能板清洗机器人科沃斯_太阳能电池板清洁机器人

太阳能电池板清洁机器人锐宝RAYBOT,可以实现自动升降式地免水清扫,使常年暴露在太阳下的电池板能彻底摆脱灰尘和污垢。当放置在太阳能电池板上时,锐宝能够自主行走、跨越最大3cm间隙并自动规划路线。底部吸盘设计能使RAYBOT安全地吸附在最大安…

html jq 控制显示密码,js、jquery分别实现点击密码输入框密码显示和隐藏

很多密览始不次这得是觉砖怎可我滚脑选的方近器上码框都有个眼睛标记,点击能显示密码。原理就是点击切换password为te要圈器是天的年编功小还久概据含直这请框结业未商屏页屏随会维气大机域页效实一应控高标近用功的xt等显示主要知识点:onmousedown&…

maven依赖循环引用_maven循环引用的问题

多模块的maven工程,有时候由于设计的不合理或者需求的变更。会导致模块之间产生循环依赖,编译的时候会报如下的错误:[INFO] Scanning for projects... [ERROR] The projects in the reactor contain a cyclic reference: Edge between .....重…

翻翻看 类型html5,3款容易上手的HTML5编辑工具推荐~

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼我们的生活已经时刻可见H5页面的身影,从美食到用车、从购物到求职,可以说HTML5技术对我们生活的影响是颠覆性的。今天小编就给大家推荐5款容易上手的H5页面,大家可以通过自己制作H5页面来感受一下…

ilm 和dlm差异_《存储e周刊》第28期 信息生命周期管理之争

说二月份的最后一周是ILM之周,完全是因为EMC在华推出了其历史上最广泛的分级存储平台组合,跨高端、中端、网络附加存储(NAS)与内容寻址存储(CAS)的全部系列,希望以此帮助客户实现信息在整个生命周期中的最大价值。而信息生命周期管理的存储理…

幼儿园体育游戏电子计算机教案,【幼儿园体育跳圈圈教案】小班体育教案跳圈圈_小班跳圈圈游戏教案_亲亲宝贝网...

教案二:小兔跳圈活动目标:1、在原地纵跳和短距离双脚连续向前跳的基础上,尝试较长距离双脚连续向前跳圈。2、提高身体的协调能力和弹跳能力。活动准备:1、材料准备:呼啦圈若干、小兔头饰、蘑菇、篮子。2、游戏场地设置…

crtsiii型无砟轨道板_自主知识产权CRTSⅢ型轨道板助力,赣深铁路无砟轨道轨道板灌注第一工作面完成...

(本报河源讯 通讯员 陈前名 杨琰妤)11月29日,伴随着碧源中桥轨道板最后一方自密实混凝土浇筑完成,标志着由中国中铁四局机电公司赣深铁路项目部负责施工的第一工作面无砟轨道工程圆满完成,为实现年底全线轨道板全部灌注的目标奠定了坚实基础。…

thymeleaf 复选框回显_Thymeleaf+layui+jquery复选框回显

一、Thymeleaflayuijquery复选框回显基于Thymeleaf模板下的layuijquery复选框回显,主要是jquery。大致意思是:把数组转成JSON传到前台,再在前台转回数组 AJAX一般都是用JSON格式或XML格式来传递数据的JSON就是一种具有特殊格式的字符串。1.实…

计算机网络画出发送窗口变化,全国2010年7月自考计算机网络原理试题及答案

全国2010年7月自考计算机网络原理试题及答案课程代码:04741一、单项选择题(本大题共24小题,每小题1分,共24分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。1.由一…

带孔的打印纸怎么设置_带孔电脑打印纸规格尺寸的相关知识及应用范围

1.带孔电脑打印纸规格尺寸的相关知识及应用范围。带孔电脑打印纸有分241mm和381mm通用两种规格。这里的241mm和381mm指的是的宽度,通常用的时候来分层数,可以分为1至6层甚至7、8层之多,打印纸的颜色有白、红、蓝、绿、黄五种,而白…

聋人工学院计算机老师,聋人工学院12位手语老师用双手传递声音

在全国第十届残运会暨第七届特奥会上有一个特殊的节目,它虽然是舞蹈,但表演者却听不见背景音乐,它虽然需要踩点,但表演者却只能靠记忆与眼睛去完成每一个节拍。70名理工大学聋人工学院的听障同学将克服身体残疾,共同演…

mysql 乘法_测试面试题集Python花式打印九九乘法口诀表

——————今天距2020年28天——————这是ITester软件测试小栈第85次推文面试的时候,面试官可能要求原地秀一段代码,比如小学生都必须会默写的九九乘法口诀表,有长方形格式、左下三角形格式、左上三角形格式、右上三角形格式、以及右下三…

量子计算机怎么编程,量子计算机编程(一)——QPU编程

今天要给大家介绍的是这本书《Programming Quantum Computers —— Essential Algorithms and Code Samples》,主要讲如何在量子计算机上编程,又示例的代码可以跑 https://oreilly-qc.github.io./ ,这本书的理解方向是纯粹计算机的&#xff0…

python支付宝自动转账_python实现支付宝转账接口

python实现支付宝转账接口发布时间:2020-09-14 03:23:42来源:脚本之家阅读:128由于工作需要使用python开发一个自动转账接口,记录一下开发过程。首先需要在蚂蚁金服上申请开通开发者账户,有了开发者账户就可以使用沙箱…

计算机配置动态硬盘,如何把硬盘的类型从动态变成基本?

将动态磁盘转换为基本磁盘基本磁盘和动态磁盘是Windows系统下两种基本的硬盘配置类型。大部分的个人计算机使用的是基本磁盘,这样能让磁盘管理变得简单。高级用户和IT管理员使用的可能就是动态磁盘以便改善多磁盘计算机的性能。基本磁盘使用主分区,扩展分…

unity 纹理压缩格式‘_纹理优化:让你的纹理也“瘦”下来

在上一期《纹理优化:不仅仅是一张图片那么简单》中,我们针对纹理相关的优化,挑选了部分知识点分析。无论是大家在开发时的疏忽,还是对相关知识点的理解不足,这些问题的积累最终都会反映到项目的性能表现上。为此&#…

2020中级计算机工程师,2020年上半年中级网络工程师报考详解

原标题:2020年上半年中级网络工程师报考详解软考全称叫做“全国计算机技术与软件专业技术资格(水平)考试”已经开展了十多年了,所受到的欢迎程度也是越来越高,据统计累计参加软考的人数已超300万人,同时每年以21万人的速度持续增加…