真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

flask模型類數(shù)據(jù)序列化的方法

這篇文章主要介紹了flask模型類數(shù)據(jù)序列化的方法,具有一定借鑒價(jià)值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。

目前創(chuàng)新互聯(lián)已為1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)絡(luò)空間、網(wǎng)站運(yùn)營(yíng)、企業(yè)網(wǎng)站設(shè)計(jì)、泰來(lái)網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

我們?cè)谧龊笈_(tái)接口的時(shí)候,對(duì)于返回值,用的最多的就是json數(shù)據(jù)格式

flask中,返回json數(shù)據(jù)格式,我們可以用到flask的jsonify函數(shù)。

對(duì)于基礎(chǔ)序列是可以直接序列化的,但是更多的情況下,我們要返回給前端的是一個(gè)從數(shù)據(jù)庫(kù)查詢的模型對(duì)象。那么要如何序列化一個(gè)模型對(duì)象呢?

追蹤flask源碼,我們會(huì)發(fā)現(xiàn),在處理特殊類型的數(shù)據(jù)的時(shí)候,flask用到了json包下的一個(gè)JSONEncoder類,它里面有一個(gè)很重要的函數(shù),default(),這里面對(duì)datetime,date,uuid,html等都做了特殊處理,但是沒(méi)有對(duì)模型對(duì)象做處理。

所以思路就出來(lái)了,我們需要重寫JSONEncoder的default函數(shù),想辦法將模型對(duì)象轉(zhuǎn)化為dict類型,這樣jsonify就可以直接處理了。

那么如何處理模型對(duì)象?

最開始想到的是,是用模型對(duì)象的__dict__屬性,但是這個(gè)屬性中只有實(shí)例屬性,沒(méi)有類屬性,所以顯然用這個(gè)不可取的。

又想到我們平時(shí)要定義一個(gè)字典類型,是怎么處理的?

可以使用d = dict() 函數(shù)來(lái)創(chuàng)建一個(gè)字典類型的變量。

那如果我們將模型對(duì)象實(shí)例作為參數(shù)傳遞給dict() 是否可行呢?

答案是可行的,但是我們需要在模型對(duì)象中定義兩個(gè)方法,keys()方法和__getitem__()方法

keys()方法返回值為一個(gè)序列,用于告訴dict,當(dāng)前dict()的key值

__getitem__() 方法,用于將key值和value值對(duì)應(yīng)起來(lái)返回給dict()

flask模型類數(shù)據(jù)序列化的方法

所以,flask中,如何序列化模型對(duì)象呢?答案就呼之欲出了。直接上代碼

flask模型類數(shù)據(jù)序列化的方法

如上圖,定義類JsonEncode,繼承自flask.json下面的JSONEncoder,然后重寫里面的default函數(shù),其他的不變,唯一就是增加模型對(duì)象的序列化,

判斷如果當(dāng)前對(duì)象中存在keys和__getitem__屬性(即我們上面自定義的兩個(gè)方法),則表示是模型對(duì)象,把它作為參數(shù)傳給dict(),

然后將我們頂一個(gè)JsonEncoder函數(shù)替換掉flask.json下面的JSONEncoder類。

最后在需要序列化的模型下面定義keys()和__getitem__()方法。flask模型類數(shù)據(jù)序列化的方法

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享flask模型類數(shù)據(jù)序列化的方法內(nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問(wèn)題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!


網(wǎng)頁(yè)題目:flask模型類數(shù)據(jù)序列化的方法
當(dāng)前網(wǎng)址:http://www.weahome.cn/article/gsepic.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部