Django框架

Django是一個網頁框架(Web Framework),其軟體架構是採用MVC(Model-View-Controller,模型-視圖-控制器)樣式所設計的框架。

不過,Django的MVC設計樣式有些不太一樣,請參考下表。

名稱的差異實際上是有爭議的(可討論的),我們使用者在乎的是它真正的涵意,其實兩者所指的是同一個東西。

在Django開發團隊所理解的MVC架構中,一般MVC架構的View是用來呈現獲取的資料給使用者,View的目的不是"資料如何呈現",而是"呈現哪一個資料"。View所描述的是你看到什麼,而不是你看到的是什麼樣子,這兩者是很微妙的差異。

在這樣的理解之下,在Django的框架的View是特定網址(URL)的回呼函式(callback function),回呼函式會決定哪一個資料被獲取,所以View描述的是"你看到什麼"。

更進一步來說,將內容(content)從展現的視圖中分離開來是明智的選擇,因此Django採用樣板(template)的方法。Django的View決定呈現哪一個資料,而View所指定的Template則會描述"你如何看到、長什麼樣子"。

換句話說,Django的View和Template都是對應到MVC架構的View,都是關於資料顯示的部分。

如果你硬是要從Django的框架中找到MVC樣式對應的Controller,那麼大概就是Django自己本身吧!因為Django收到請求之後,Django將決定適當的View(依據URL設定檔:urls.py)。

如果你希望用縮寫來描述這樣的架構,你可以稱Django是"MTV"框架,也就是:Model-Template-View。

最後,不管這些架構是怎麼命名,Django將會為我們實現最合理的框架,重要的是我們必須了解這些設計樣式的觀念。