在目前基於Python語言的幾十個Web開發框架中,幾乎所有的全棧框架都強制或引導開發者使用MVC設計模式。所謂全棧框架,是指除了封裝網絡和線程操作,還提供HTTP、數據庫讀寫管理、HTML模板引擎等一系列功能的Web框架,比如Django、Tornado和Flask。
MVC設計模式:
最早由Trygve Teenskaug
在1978年提出,上世紀80年代是程序語言Smalltalk的一種內部架構。后來MVC被其他領域借鑒,成為了軟件工程中的一種軟件架構模式。
MVC把Web框架分為3個基礎部分:
- 模型(Model):用於封裝與應用程序的業務邏輯相關的數據及對數據的處理方法,是Web應用程序中用於處理應用程序的數據邏輯的部分,Model只提供功能性的接口,通過這些接口可以獲取Model的所有功能。白話說,這個模塊就是Web框架和數據庫的交互層。
- 視圖(View):負責數據的顯示和呈現,是對用戶的直接輸出。
- 控制器(Controller):負責從用戶端收集用戶的輸入,可以看成提供View的反向功能。
這三個部分互相獨立,但又相互聯系,使得改進和升級界面及用戶交互流程,在Web開發過程任務分配時,不需要重寫業務邏輯及數據訪問代碼。
MVC在Python之外的語言中也有廣泛應用,例如VC++的MFC,Java的Structs及Spring、C#的.NET開發框架,都非常有名。
MTV設計模式:
Django對傳統的MVC設計模式進行了修改,將視圖分成View模塊和Template模塊兩部分,將動態的邏輯處理與靜態的頁面展現分離開。而Model采用了ORM技術,將關系型數據庫表抽象成面向對象的Python類,將表操作轉換成類操作,避免了復雜的SQL語句編寫。MTV和MVC本質上是一樣的。
- 模型(Model):和MVC中的定義一樣
- 模板(Template):將數據與HTML語言結合起來的引擎
- 視圖(View):負責實際的業務邏輯實現
Django的MTV模型組織可參考下圖所示: