Django設計哲學

這裡將介紹開發者在創造榛果(Django)之初所使用的基本哲學,目的是讓使用者解釋過去,指引未來,達到溫故知新、鑑往開來的目標。

整體的設計哲學

鬆耦合(Loose coupling)

設計榛果(Django)網頁框架的基本目標就是:鬆耦合(Loose coupling)和緊密的凝聚力(tight cohesion)。意思是說,當你在使用榛果(Django)網頁框架時,你不需要知道框架之中的每個區塊(除非你有絕對的需要),這是因為鬆耦合設計的緣故。

舉例來說,框架中的樣板(template)區塊無須知道web請求的處理,資料庫(modal)區塊也無須知道資料最後如何呈現成網頁,視圖(view)區塊無須知道設計師使用哪一個樣板。神奇的是,最後這些區塊可以完美地結合運作,這依靠的是最初緊密的凝聚力設計。

雖然榛果(Django)為了開發的方便性而提供一系列區塊,然而這些區塊之間在任何地方都是獨立的(互不耦合)設計。

較少的程式碼(Less code)

使用榛果(Django)所開發的網頁應用程式(web application)應該盡可能地減少程式碼的撰寫,並且缺少可供模仿的樣板文件(boilerplate)。榛果(Django)應該充分地使用並發揮Python語言的動態特性能力,像是內省(introspection)的能力。

快速開發(Quick development)

對於一個21世紀的網頁框架而言,它應該讓冗長繁瑣的網頁開發更加快速,榛果(Django)的設計哲學將允許令人難以置信的快速開發。

"乾燥"原則(Don’t repeat yourself, DRY)

呵呵,是「DRY原則」!每一個獨特的概念,和(或)一段資料,這些東西都應該存放於一個,且只有唯一的地方。冗餘(Redundancy)是壞的,統一規格化(Normalization)是好的。

明確勝於隱含(Explicit is better than implicit)

關於這一點設計哲學,也是Python程式語言的核心哲學(The Zen of Python),意旨:榛果(Django)的設計不應該施太多的"魔法"(這裡的魔法是指一些隱含的程式語法)。

魔法不應該發生,除非有一個很好的理由。只有當其他的方式都難以達到時,而且實現這項魔法具有極大的便利性,我們才應該考慮將魔法加入榛果(Django)的設計之中,所施展的魔法也不應該混淆正在學習該項特色的開發者。

一致性(Consistency)

榛果(Django)在框架中不同的層次都應具有一致性,從低層次的Python程式撰寫風格,到高層次的框架使用經驗,其應用方式都要具有相同的風格。

模型(Model)的設計哲學

視圖(View)的設計哲學

樣板(Template)的設計哲學