django(Python Web 框架)

django(Python Web 框架)

本詞條是多義詞,共3個義項
更多義項 ▼ 收起列表 ▲

Django是一個開放原始碼的Web套用框架,由Python寫成。採用了MTV的框架模式,即模型M,視圖V和模版T。它最初是被開發來用於管理勞倫斯出版集團旗下的一些以新聞內容為主的網站的,即是CMS(內容管理系統)軟體。並於2005年7月在BSD許可證下發布。這套框架是以比利時的吉普賽爵士吉他手Django Reinhardt來命名的。

基本介紹

  • 中文名:Django
  • 外文名:Django
  • 程式語言Python
  • 特性:ORM、URL分發系統、MTV
  • 最新版本:2.2(2019-4)
框架介紹,架構設計,設計哲學,工作機制,部署,文檔,學習網站,

框架介紹

Django 項目是一個Python定製框架,它源自一個線上新聞 Web 站點,於 2005 年以開源的形式被釋放出來。Django 框架的核心組件有:
  1. 用於創建模型的對象關係映射
  2. 為最終用戶設計的完美管理界面
  3. 一流的 URL 設計
  4. 設計者友好的模板語言
  5. 快取系統。
Django(發音:[`dʒæŋɡəʊ]) 是用python語言寫的開源web開發框架(open source web framework),它鼓勵快速開發,並遵循MVC設計。Django遵守BSD著作權,初次發布於2005年7月, 並於2008年9月發布了第一個正式版本1.0 。
django logodjango logo
Django 根據比利時的爵士音樂家Django Reinhardt命名,他是一個吉普賽人,主要以演奏吉它為主,還演奏過小提琴等。
由於Django在近年來的迅速發展,套用越來越廣泛,被著名IT開發雜誌SD Times評選為2013 SD Times 100,位列“API、庫和框架”分類第6位,被認為是該領域的佼佼者。

架構設計

Django是一個基於MVC構造的框架。但是在Django中,控制器接受用戶輸入的部分由框架自行處理,所以 Django 里更關注的是模型(Model)、模板(Template)和視圖(Views),稱為 MTV模式。它們各自的職責如下:
層次
職責
模型(Model),即數據存取層
處理與數據相關的所有事務: 如何存取、如何驗證有效性、包含哪些行為以及數據之間的關係等。
模板(Template),即表現層
處理與表現相關的決定: 如何在頁面或其他類型文檔中進行顯示。
視圖(View),即業務邏輯層
存取模型及調取恰當模板的相關邏輯。模型與模板的橋樑。
從以上表述可以看出Django 視圖不處理用戶輸入,而僅僅決定要展現哪些數據給用戶,而Django 模板 僅僅決定如何展現Django視圖指定的數據。或者說, Django將MVC中的視圖進一步分解為 Django視圖 和 Django模板兩個部分,分別決定 “展現哪些數據” 和 “如何展現”,使得Django的模板可以根據需要隨時替換,而不僅僅限制於內置的模板。
至於MVC控制器部分,由Django框架的URLconf來實現。URLconf機制是使用正則表達式匹配URL,然後調用合適的Python函式。URLconf對於URL的規則沒有任何限制,你完全可以設計成任意的URL風格,不管是傳統的,RESTful的,或者是另類的。框架把控制層給封裝了,無非與數據互動這層都是資料庫表的讀,寫,刪除,更新的操作。在寫程式的時候,只要調用相應的方法就行了,感覺很方便。程式設計師把控制層東西交給Django自動完成了。 只需要編寫非常少的代碼完成很多的事情。所以,它比MVC框架考慮的問題要深一步,因為我們程式設計師大都在寫控制層的程式。現在這個工作交給了框架,僅需寫很少的調用代碼,大大提高了工作效率。

設計哲學

Django的主要目的是簡便、快速的開發資料庫驅動的網站。它強調代碼復用,多個組件可以很方便的以“外掛程式”形式服務於整個框架,Django有許多功能強大的第三方外掛程式,你甚至可以很方便的開發出自己的工具包。這使得Django具有很強的可擴展性。它還強調快速開發和DRY(Do Not Repeat Yourself)原則。
Django基於MVC的設計十分優美:
  • 對象關係映射 (ORM,object-relational mapping):以Python類形式定義你的數據模型,ORM將模型與關係資料庫連線起來,你將得到一個非常容易使用的資料庫API,同時你也可以在Django中使用原始的SQL語句。
  • URL 分派:使用正則表達式匹配URL,你可以設計任意的URL,沒有框架的特定限定。像你喜歡的一樣靈活。
  • 模版系統:使用Django強大而可擴展的模板語言,可以分隔設計、內容和Python代碼。並且具有可繼承性。
  • 表單處理:你可以方便的生成各種表單模型,實現表單的有效性檢驗。可以方便的從你定義的模型實例生成相應的表單。
  • Cache系統:可以掛在記憶體緩衝或其它的框架實現超級緩衝 -- 實現你所需要的粒度。
  • 會話(session),用戶登錄與許可權檢查,快速開發用戶會話功能。
  • 國際化:內置國際化系統,方便開發出多種語言的網站。
  • 自動化的管理界面:不需要你花大量的工作來創建人員管理和更新內容。Django自帶一個ADMIN site,類似於內容管理系統

工作機制

1.用manage .py runserver 啟動Django伺服器時就載入了在同一目錄下的settings .py。該檔案包含了項目中的配置信息,如前面講的URLConf等,其中最重要的配置就是ROOT_URLCONF,它告訴Django哪個Python模組應該用作本站的URLConf,默認的是urls .py
工作機制工作機制
2.當訪問url的時候,Django會根據ROOT_URLCONF的設定來裝載URLConf。
3.然後按順序逐個匹配URLConf里的URLpatterns。如果找到則會調用相關聯的視圖函式,並把HttpRequest對象作為第一個參數(通常是request)
4.最後該view函式負責返回一個HttpResponse對象。

部署

Django可以運行在Apache,Nginx上,也可以運行在支持WSGIFastCGI的伺服器上。支持多種資料庫,已經支持Postgresql,MySql, Sqlite3,OracleGoogle App Engine也支持Django的某些部分,國內支持的平台有(SAE)Sina App Engine,(BAE)百度套用引擎。

文檔

Django1.0 建立了強大完整的文檔體系,,涵蓋了Django的方方面面,並且適合各種水平的讀者和開發者. 其中還包含若干個簡單的示例,你可以跟隨他們一步步體驗Django的優美。
截至目前,Django最新版本是2.2,1.7系列版本的文檔非常的全面,主要由以下幾部分組成:
  1. First steps,提供一個快速起步的教程,可以很快開始使用Django
  2. The model layer,介紹Django的抽象模型層
  3. The view layer,介紹Django的視圖層
  4. The template layer,介紹Django的模板層
  5. Forms,介紹Django提供的一系列用於幫助使用表單的工具
  6. The development process,介紹Django提供的一系列用於開發和測試的工具
  7. The admin,介紹Django提供的用於站點、內容管理的工具
  8. Security,介紹Django提供的用於站點安全控制的工具
  9. Internationalization and localization,介紹Django提供的用於全球化和本地化的工具
  10. Performance and optimization,介紹Django提供的用於性能和最佳化的方面的工具以及建議
  11. Python compatibility,介紹Django在不同Python環境下的兼容性(Jython和Python 3)
  12. Geographic framework,介紹Django提供的地理位置相關的工具
  13. Common web application tools,介紹Django提供的一些常用的Web應用程式工具(比如RSS等)
  14. Other core functionalities,介紹Django提供的其它重要工具(比如跳轉、路由等等)
  15. The django open source project,介紹Django作為開源項目的一些內容,比如設計哲學,如何參與開發等等。

學習網站

Django官方網站
Django documentation
The Django Book
Django中文手冊
Django 基礎教程

相關詞條

熱門詞條

聯絡我們