Django的架構


 

簡介

  Django繼承並簡化了MVC架構。MVC中的Controller部分基本全由Django完成。View部分被分割成兩部分,即:負責HTML渲染的模板和負責顯示邏輯的視圖。所以Django又被稱為MVT(Model-View-Template)框架。這個Django除了MVT框架的核心部分(O/R映射工具、URL分配器(Dispatcher)、視圖、模板系統)之外。還有管理界面、緩存系統、國際化支持、表單處理等機制和功能。

  使用Django開發Web應用站點時,需准備一個承載着Django實例及數據庫設置等內容的工程,然后通過在該工程中新建幾個應用或者調用外部應用,或者將二者結合起來進行開發。由於每個應用的本質都是Python程序包,所以只要按功能(模型、視圖、模板等、)對這些包進行分析,完全可以拿到其他工程中重復利用。

 

Django架構處理請求的流程

1.客戶端發來的HTTP請求被視為Django的請求對象。

2.URL分配器負責搜索並調用被請求的URL所對應的視圖

3.被調用的視圖根據情況使用模型或模板生成相應的對象

4.相應對象作為HTTP形影發回給用戶

 

Django的組成

工程

  工程是承載了Django實例的所有設置的Python程序包。大部分情況下,一個Web站點就是一個工程。工程內可以新建及存放該工程固有的應用,或者保存Web站點的設置(數據庫設置、Django的選項設置、各應用的設置等)

應用

  對於Django而言,應用之的是表示單一工程的Web應用的Python程序包。由於其本質就是Python程序包,因此方法PYTHONPATH有效地任何位置都沒有問題。這里最好盡量減少應用與工程、應用於應用之間的依賴關系,做到功能獨立,以便在其他工程中重復利用。

模型

  Django提供了O/R映射工具,因此可以用Python代碼來描述數據庫布局。

  每個模型都是繼承了django.db.models.Model類的Python的類,分別對應數據庫中的一個表格。通過建數據庫的字段、關系、行為定義為模型類的屬性或方法,我們可以使用豐富且靈活的數據庫方位API。

URL分配器

  URL分配器機制使得URL信息不再受框架及擴展名的制約,從而讓Web應用的URL設計保持簡介。

  URl在URlconf模塊中進行描述,URLconf模塊中包含使用正則表達式書寫的URL和Python函數的映像。URlconf能夠以應用為單位進行分割,因此提高了應用的可重復利用性。另外,我們可以利用給URL設置名稱並定義的方式讓代碼和目標直接通過該名稱調用URL,從而將URL設計與代碼分離。

視圖

  Django的視圖時一類函數,它能夠生成指定頁面的HttpResponse對象或像Http 404這樣的異常情況,返回HTTP請求。典型的視圖函數的處理流程通常是從請求參數中獲取數據,讀取模型,熱按后根據獲取的數據渲染模板。

模板系統

  在Django的概念中,模板系統只負責顯示,並不是編寫邏輯代碼的環境。因此Django的模板系統將設計與內容、代碼分離開來,是一共功能強、擴展性高、對設計者很友好的模板語言。

  模板基於文本而不是XML,因此它不但能生成XML和HTML,還能生成E-mail、JavaScript、CSV等任意文本格式。

  另外,如果使用模板繼承功能,子模板只需要將父模板中預留的空位填滿即可。我們在編寫模板時只需要描述各個模板獨有的部分,因此可以省去重復冗余的編碼過程。

管理界面

  大多Web應用在運行過程中,都需要一個專供擁有管理員權限的用戶添加、編輯、刪除數據的界面,但是實際制作這個界面並不容易。

  Django只需將已經完工的模型添加到管理站點,就能根據模型定義,動態地生成頁面。為我們提供一個功能齊全的管理界面。

緩存系統

  Django可以使用memcached等緩存后端輕松地緩存數據。比如可以將動態頁面的渲染結果緩存下來,等到下次需要時直接讀取緩存,從而不必每次都對動態頁面進行處理。

  緩存的后端可以從memcached、數據庫、文件系統、本地內存等位置進行選擇。緩存對象也支持整個網站、特定的整個視圖、部分模板、特定數據等。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM