亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

flask模型類數據序列化的方法

發布時間:2020-08-13 14:17:59 來源:億速云 閱讀:603 作者:小新 欄目:編程語言

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

我們在做后臺接口的時候,對于返回值,用的最多的就是json數據格式

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模型類數據序列化的方法

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

flask模型類數據序列化的方法

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

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

然后將我們頂一個JsonEncoder函數替換掉flask.json下面的JSONEncoder類。

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

感謝你能夠認真閱讀完這篇文章,希望小編分享flask模型類數據序列化的方法內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

霸州市| 康乐县| 蚌埠市| 五华县| 黄冈市| 博罗县| 兖州市| 都昌县| 昌吉市| 云霄县| 阿合奇县| 南宁市| 阿鲁科尔沁旗| 甘南县| 民权县| 南部县| 栾城县| 东山县| 如东县| 青龙| 合江县| 福海县| 滁州市| 元谋县| 井研县| 阳春市| 漠河县| 苍南县| 南澳县| 汤原县| 漳浦县| 淳安县| 玉龙| 和平县| 天长市| 行唐县| 阳信县| 阿荣旗| 银川市| 江都市| 分宜县|