Django REST framework:Serializers與ModelSerializer

一、概念

序列化,指將查詢集QuerySet和Model實例等復(fù)雜的數(shù)據(jù)轉(zhuǎn)換為原生的Python數(shù)據(jù)類型,進而返回給客戶端,客戶端就可以很容易地呈現(xiàn)JSON,XML或其他內(nèi)容類型。

反序列化,指將傳入數(shù)據(jù)解析后,轉(zhuǎn)換回復(fù)雜的類型,從而可以保存在數(shù)據(jù)庫中。

在REST Framework中,提供了多個用于序列化操作的類,比較常用的如下:

(1)Serializer:進行序列化最基本的類。

(2)ModelSerializer:繼承于Serializer,包含了與Model字段對應(yīng)的字段,可以快速對Model進行序列化,默認實現(xiàn)了create()和update()

二、Serializer

首先創(chuàng)建一個Model:

創(chuàng)建對該Model進行序列化的類,使用Serializer,這里包含了2部分,一部分是定義了需要序列化的字段;另一部分包含了反序列化的create和update操作,需要將經(jīng)過驗證的數(shù)據(jù)返回完整的對象實例,并將對象保存到數(shù)據(jù)庫中。

這里需要注意的是:新增還是更新,取決于在實例化序列化器類時是否傳遞了現(xiàn)有實例,官方文檔如下:

最后寫一個Views,用來驗證Serializer:

三、ModelSerializer

相比于Serializer,ModelSerializer的使用更加簡單:

(1)可根據(jù)指定的model自動檢測并生成序列化的字段,不需要提前定義,默認情況下,將所有Model類中的字段映射到ModelSerializer類中相應(yīng)的字段。

(2)自動為序列化程序生成驗證器,例如 unique_together 驗證器

(3)默認實現(xiàn)了create()和update()方法

首先,創(chuàng)建一個Model:

使用ModelSerializer為該Model創(chuàng)建序列化類:

官方文檔強烈建議顯式設(shè)置fields屬性進行序列化字段,這將降低模型更改時無意中暴露數(shù)據(jù)的可能性。這里只顯示設(shè)置了4個字段,測試一下ModelSerializer:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容