Django實戰(zhàn)003:為什么使用Serializer序列化器

Django REST framework序列化器是什么

在Django中唯袄,序列化器是將模型類轉(zhuǎn)換成Json或者Xml格式數(shù)據(jù)并對數(shù)據(jù)進行驗證米碰,具體表現(xiàn)在:

1讥裤,Django從后臺向前臺傳遞數(shù)據(jù)時將會將模型類轉(zhuǎn)換成Json格式數(shù)據(jù)返回給前端乒裆,

2,前端向后臺請求數(shù)據(jù)時對數(shù)據(jù)進行驗證并處理數(shù)據(jù)(驗證數(shù)據(jù)不一定處理召嘶,但是處理數(shù)據(jù)時必須先驗證數(shù)據(jù)),

為什么要返回Json數(shù)據(jù)

Json是一種簡單的數(shù)據(jù)交換格式哮缺,因為格式簡潔弄跌,易于讀取,這樣前臺就可以一眼就看出數(shù)據(jù)中的內(nèi)容尝苇,方便檢查排錯同時可通過JavaScript進行解析铛只,不管傳輸還是解析效率都很高,所以一般前臺都會要求后臺返回json格式的數(shù)據(jù)糠溜。

Django怎么返回Json數(shù)據(jù)

現(xiàn)在我們在models.py中新建一個模型類,這里我定義一個電影類淳玩,這里我定義了3個簡單的類,在film中關(guān)聯(lián)了其他2個類非竿。

為了更加方便快捷的操作蜕着,這里我創(chuàng)建了一個Django超級管理員,在admin后臺添加了些簡單的數(shù)據(jù)進去红柱,在admin.py文件中注冊下我們的模型類承匣,如下圖所示。

from django.contrib import admin

from user.models import Performer,Type,Film

# Register your models here.

class FilmAdmin(admin.ModelAdmin):

# 指定要顯示的屬性

list_display = ["id", "film_name", "performer", "film_type", "time", "film_url", "desc"]

admin.site.register(Performer)

admin.site.register(Type)

admin.site.register(Film,FilmAdmin)

下來我們就來通過視圖獲取電影的全部數(shù)據(jù)锤悄,現(xiàn)在我們新建一個測試文件dome.py韧骗,我們來測試下我們獲取到的數(shù)據(jù)格式,首先我先設(shè)置文件然后導(dǎo)入這幾張表和models零聚,沒有前面這三行程序會報錯:django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings袍暴。

這里我們可以看到,獲取到的是個 QuerySet對象

接著我們繼續(xù)獲取隶症,使用Django為我們提供的values方法來獲取對象中的值容诬,這里我們可以看到我們已經(jīng)可以讀取到對應(yīng)的數(shù)據(jù)和關(guān)聯(lián)鍵了,但這里我們獲取到的數(shù)據(jù)類型還是QuerySet對象沿腰。

現(xiàn)在用list()方法轉(zhuǎn)換下數(shù)據(jù)類型,將QuerySet對象強制轉(zhuǎn)換成數(shù)組狈定,這里我們可以看到前面已經(jīng)沒有顯示QuerySet颂龙,而是[{...}习蓬,{...}]數(shù)組格式。

但這里我們還發(fā)現(xiàn)個問題措嵌,在這些數(shù)據(jù)中還有兩個外鍵關(guān)聯(lián)的數(shù)據(jù)并沒有顯示值躲叼,而是對應(yīng)的id,要獲取這兩個外鍵的值我們還需要獲取Type和Performer的列表信息企巢,通過指定的id來獲取對應(yīng)的值枫慷,這里我們可以直接用filter方法來獲取,這樣我們才算真正獲取到了我們需要的所有參數(shù)值了浪规。

總結(jié):通過Django我們需要將數(shù)據(jù)進行幾次轉(zhuǎn)換才能提取到我們所需的數(shù)據(jù)信息或听,出現(xiàn)關(guān)聯(lián)時我們還需要進一步的對數(shù)據(jù)進行查詢獲取,操作還是挺麻煩的笋婿。

接下來我們用REST framework序列化器來試試同樣獲取當前的數(shù)據(jù)誉裆,看看是如何操作的。首先我們目前已經(jīng)建立了數(shù)據(jù)模型類缸濒,所以這里我們直接在當前文件下創(chuàng)建一個序列化器足丢,新建一個serializers.py文件,引入serializers:from rest_framework import serializers庇配,接著導(dǎo)入我們的模型類斩跌。

同樣我們用dome.py來測試下獲取的數(shù)據(jù)時什么樣的,我們可以從下圖中看出捞慌,通過使用REST framework序列化器耀鸦,我們可以很簡單的獲取到我們想要的數(shù)據(jù),而不用進行多次的轉(zhuǎn)換卿闹。

這里我們看到后臺獲取到的是OrderedDict數(shù)據(jù)揭糕,這是一種有序的字典數(shù)據(jù)結(jié)構(gòu)。那么前臺拿到的是什么類型的呢锻霎,這里我們寫個視圖函數(shù)輸出一下著角,在views.py中我們寫個簡單的視圖,然后配上路由旋恼。

現(xiàn)在我們啟動下服務(wù)吏口,看下該路由下獲取到的數(shù)據(jù)到底是什么形式的,這里我們可以看到給前臺返回的數(shù)據(jù)是個列表元素冰更,每部電影的數(shù)據(jù)意字典的形式嵌套在里面产徊,而外鍵中的數(shù)據(jù)同樣以字典的形式內(nèi)嵌在電影中,前臺只要依次遍歷就可以獲取到對應(yīng)的數(shù)據(jù)了蜀细。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末舟铜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子奠衔,更是在濱河造成了極大的恐慌谆刨,老刑警劉巖塘娶,帶你破解...
    沈念sama閱讀 222,865評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異痊夭,居然都是意外死亡刁岸,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,296評論 3 399
  • 文/潘曉璐 我一進店門她我,熙熙樓的掌柜王于貴愁眉苦臉地迎上來虹曙,“玉大人,你說我怎么就攤上這事番舆≡吞迹” “怎么了?”我有些...
    開封第一講書人閱讀 169,631評論 0 364
  • 文/不壞的土叔 我叫張陵合蔽,是天一觀的道長击敌。 經(jīng)常有香客問我,道長拴事,這世上最難降的妖魔是什么沃斤? 我笑而不...
    開封第一講書人閱讀 60,199評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮刃宵,結(jié)果婚禮上衡瓶,老公的妹妹穿的比我還像新娘。我一直安慰自己牲证,他們只是感情好哮针,可當我...
    茶點故事閱讀 69,196評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坦袍,像睡著了一般十厢。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上捂齐,一...
    開封第一講書人閱讀 52,793評論 1 314
  • 那天蛮放,我揣著相機與錄音,去河邊找鬼奠宜。 笑死包颁,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的压真。 我是一名探鬼主播娩嚼,決...
    沈念sama閱讀 41,221評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼滴肿!你這毒婦竟也來了岳悟?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,174評論 0 277
  • 序言:老撾萬榮一對情侶失蹤泼差,失蹤者是張志新(化名)和其女友劉穎竿音,沒想到半個月后和屎,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,699評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡春瞬,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,770評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了套啤。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片宽气。...
    茶點故事閱讀 40,918評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖潜沦,靈堂內(nèi)的尸體忽然破棺而出萄涯,到底是詐尸還是另有隱情,我是刑警寧澤唆鸡,帶...
    沈念sama閱讀 36,573評論 5 351
  • 正文 年R本政府宣布涝影,位于F島的核電站,受9級特大地震影響争占,放射性物質(zhì)發(fā)生泄漏燃逻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,255評論 3 336
  • 文/蒙蒙 一臂痕、第九天 我趴在偏房一處隱蔽的房頂上張望伯襟。 院中可真熱鬧,春花似錦握童、人聲如沸姆怪。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,749評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽稽揭。三九已至,卻和暖如春肥卡,著一層夾襖步出監(jiān)牢的瞬間溪掀,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,862評論 1 274
  • 我被黑心中介騙來泰國打工召调, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留膨桥,地道東北人。 一個月前我還...
    沈念sama閱讀 49,364評論 3 379
  • 正文 我出身青樓唠叛,卻偏偏與公主長得像只嚣,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子艺沼,可洞房花燭夜當晚...
    茶點故事閱讀 45,926評論 2 361

推薦閱讀更多精彩內(nèi)容