undefined

用故事來說說什麼是Django的MTV架構

有關MTV的故事是這樣的,我們到了一間叫做餐廳用餐,這間餐廳採用Django的治理方式來經營。

我們拿起桌上的菜單,呼喚外場服務生(以下簡稱:店小二),告訴他我們點了一兩白酒、三束肉乾、招牌紅燒魚、外加五碗白飯與什錦豆花湯,給了十兩銀子。店小二收錢前先問了:「各位客官是否有VIP?」我們表

示沒有。

小二便拿著菜單去廚房吆喝一番後,拿了一兩白酒出來,又到櫥櫃找回了一些銅錢。

店小二把櫥櫃找來的錢和白酒先放到桌上,又在菜單上註明收了十兩銀子找了一些銅錢,把一兩白酒先槓掉,再對我們說:「其他菜等等上」

把餐廳比喻成Django網站,菜單就是一種模板(Template),店小二去的廚房就是一種模型(Model),這個模型裡面有白酒,但店小二隻取用了一兩的份量(整間廚房有多少份量,我們身為使用者不會知道,只有店家才會知道),店小二又去櫥櫃找錢(櫥櫃又是這家店的第二個模型,櫥櫃這個模型有放錢),最後店小二在菜單註明找了多少錢、先上了那些菜,這些動作是原本菜單上面沒有,會因為不同客人的點餐狀況不同而改變。

而店小二就是Django所謂的View,負責把各種不同的狀況,回報給廚房、櫥櫃,最後,修改菜單上的結果,呈現給我們。

所謂的MTV架構是三種縮寫:

 

M-Model-模型:

使用資料建構模型,方便日後取用,可以想成excel的sheet,每一種sheet可以儲存各類的資料,例如:各賣場流量紀錄.sheet、實際銷售商品.sheet、流量與實售.sheet,這三個sheet同時存在一個叫做「店家營業營業分析表」的excel,這樣的excel就是一個模型。不管是需要簡報還是日後觀看分析只要點開excel就不用登入網站後臺看流量,再打開營銷狀況紀錄對照。

 

 

T-Tamplate-模板:

可以當作是去餐廳喫飯,餐廳給的菜單,雖然速食店、手搖店、自助餐、咖啡店的菜單都長得不一樣,但是,一定會有品項、售價、桌號、外帶內用⋯⋯等等,這些常見的基本盤。把基本盤經過編排後就是模板的概念,把重複常用的形式做成模板,也是方便日後快速啟用,不用每開一個新的專案、APP或是餐廳就要重畫一個。

 

網站的使用者看到的網頁是以模板呈現!

 

V-View-視圖:

可以利用模板產生的空格,填入商品名稱、數量⋯⋯這些可變因素,也可以創作、更新、刪除、重複使用(也就是CRUD)。透過定義類別(class)、函式來做到這些事情。 還可以定義什麼樣的畫面應該是使用哪一種模版。View.py和urls.py的關鍵密切,urls.py是用來定義網址的。

 

 

以上是自己學習python和Django的小小心得,用故事的方式,希望能夠讓初學者可以更簡單易懂。

 

photos from unsplash

 

相關文章