国产成人AV无码一二三区,少女1到100集,国产精品久久久久精品综合紧,巜公妇之诱感肉欲HD在线播放

文章 > Flask > flask中模型类数据如何序列化

flask中模型类数据如何序列化

flask

头像

silencement

2020-09-07 17:43:057455浏览 · 0收藏 · 0评论

我们在做后台接口的时候,对于返回值,用的最多的就是json数据格式。

(视频教程推荐:flask视频教程

flask中,返回json数据格式,我们可以用到flask的jsonify函数。

对于基础序列是可以直接序列化的,但是更多的情况下,我们要返回给前端的是一个从数据库查询的模型对象。那么要如何序列化一个模型对象呢?

追踪flask源码,我们会发现,在处理特殊类型的数据的时候,flask用到了json包下的一个JSONEncoder类,它里面有一个很重要的函数,default(),这里面对datetime,date,uuid,html等都做了特殊处理,但是没有对模型对象做处理。

所以思路就出来了,我们需要重写JSONEncoder的default函数,想办法将模型对象转化为dict类型,这样jsonify就可以直接处理了。

那么如何处理模型对象?

最开始想到的是,是用模型对象的__dict__属性,但是这个属性中只有实例属性,没有类属性,所以显然用这个不可取的。

又想到我们平时要定义一个字典类型,是怎么处理的?

可以使用d = dict() 函数来创建一个字典类型的变量。

那如果我们将模型对象实例作为参数传递给dict() 是否可行呢?

答案是可行的,但是我们需要在模型对象中定义两个方法,keys()方法和__getitem__()方法

keys()方法返回值为一个序列,用于告诉dict,当前dict()的key值

__getitem__() 方法,用于将key值和value值对应起来返回给dict()

所以,flask中,如何序列化模型对象呢?答案就呼之欲出了。直接上代码

如上图,定义类JsonEncode,继承自flask.json下面的JSONEncoder,然后重写里面的default函数,其他的不变,唯一就是增加模型对象的序列化,

判断如果当前对象中存在keys和__getitem__属性(即我们上面自定义的两个方法),则表示是模型对象,把它作为参数传给dict(),

然后将我们顶一个JsonEncoder函数替换掉flask.json下面的JSONEncoder类。

最后在需要序列化的模型下面定义keys()和__getitem__()方法。

相关教程推荐:python web教程

关注

关注公众号,随时随地在线学习

本教程部分素材来源于网络,版权问题联系站长!

朋友的妈妈| 二人生猴子全程免费| 放荡的女兵伦理2| 《妻子6》在线观看免费版电视剧| 人狗大战2免费观看正版| 《黏糊糊的你》动漫免费观看| 《甜性涩爱》韩国三级| 《冲动的惩罚》免费全集| 《再来一次好吗》免费观看| 《厨房韵母2》动漫下线了吗| 巨乳童颜| 暴躁少女免费看高清电视剧| 老师穿白色双开真丝旗袍怎么穿| 中文字幕精品无码亚洲字幕一区| 武松叼着潘金莲奶头的是谁扮演的| 旅游换伴交流故事100篇| 女人尝试到更粗大的心理变化| 《法国空乘9》| 打扑克| 少妇高潮喷水久久久久久久久| 双人床上剧烈运动会越睡越累吗| 魔鬼天使 电影| 妈妈的朋友5| 陌陌影视在线观看高清完整版| 《交换做爰》在线观看| 38.JJ| 女生给男生吃小头头| 陌陌影视在线观看高清完整版| 我是宿舍的寄吧套BY小说推荐| 《完美邻居2》电影在线观看| 舌吻湿吻| 亚洲AV少妇高潮嗷嗷叫| 爷爷的鸡又黑又长下一句怎么接| 打扑克不盖被子| 妻子的妹妹免费版电视剧大全| 爸爸汆肉的日常| 天香天堂免费观看电视剧| 东北娘们国语版免费播放| 《帐篷里的秘密》动漫| 爱的健身房| 40岁女人如饥似渴最佳解决方法