複製鏈接
請複製以下鏈接發送給好友

django

(Python Web 框架)

鎖定
Django是一個高級的Python Web框架,可以快速開發安全和可維護的網站。由經驗豐富的開發者構建,Django負責處理網站開發中麻煩的部分,可以專注於編寫應用程序,而無需重新開發。它是免費和開源的,有活躍繁榮的社區,豐富的文檔,以及很多免費和付費的解決方案。 [8]  2019年12月2日,Django 3. 0發佈 [1] 
軟件名稱
Django
軟件平台
Apache,Nginx
上線時間
2008年9月
最近更新時間
2013年8月1日 [6] 
軟件語言
Python
開發商
Django Software Foundation [7] 
軟件授權
BSD license [5] 
軟件版本
4.2.4(LTS) [5] 
軟件大小
9.9 MB

django產生背景

Django最初由2003 年到2005年間由負責創建和維護報紙網站的網絡團隊開發。在創建了許多網站後,團隊開始考慮並重用許多常見的代碼和設計模式。這個共同的代碼演變一個通用的Web開發框架,2005 年 7 月被開源“Django”項目。 [8] 
Django遵守BSD版權,初次發佈於2005年7月, 並於2008年9月發佈了第一個正式版本1.0 。
Django 根據比利時的爵士音樂家Django Reinhardt命名,他是一個吉普賽人,主要以演奏吉它為主,還演奏過小提琴等。
由於Django在近年來的迅速發展,應用越來越廣泛,被著名IT開發雜誌SD Times評選為2013 SD Times 100,位列“API、庫和框架”分類第6位,被認為是該領域的佼佼者 [3] 

django主要功能

Django是高水準的Python編程語言驅動的一個開源模型.視圖,控制器風格的Web應用程序框架,它起源於開源社區。使用這種架構,程序員可以方便、快捷地創建高品質、易維護、數據庫驅動的應用程序。這也正是OpenStack的Horizon組件採用這種架構進行設計的主要原因。另外,在Dj ango框架中,還包含許多功能強大的第三方插件,使得Django具有較強的可擴展性 [2]  。Django 項目源自一個在線新聞 Web 站點,於 2005 年以開源的形式被釋放出來。Django 框架的核心組件有:
  1. 用於創建模型的對象關係映射
  2. 為最終用户設計較好的管理界面;
  3. URL 設計;
  4. 設計者友好的模板語言;
  5. 緩存系統。

django框架特點

Django已經成為web開發者的首選框架,是一個遵循 MVC 設計模式的框架。MVC是Model、View、Controller三個單詞的簡寫,分別代表模型、視圖、控制器。Django其實也是一個MTV 的設計模式。MTV是Model、Template、View三個單詞的簡寫,分別代表模型、模版、視圖 [4]  。但是在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運行環境

工作機制 工作機制
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)百度應用引擎。

django設計模式

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