1. 程式人生 > 程式設計 >python中的django是做什麼的

python中的django是做什麼的

Django是什麼?

Django是一個基於Python的Web應用框架。它與Python的另外一個Web 框架 Flask最大的區別是,它奉行 “包含一切” 的哲學。該理念即為:建立 Web 應用所需的通用功能都應該包含到框架中,而不應存在於獨立的軟體包中。例如,身份驗證、 URL 路由、 模板系統、 物件關係對映 (ORM) 和 資料庫遷移等功能都已包含在Django 框架中。雖然看上去失去了一些彈性,但是卻可以讓你在構建網站的時候更加有效率。

由於Django最初是被開發來用於管理勞倫斯出版集團旗下的一些以新聞內容為主的網站的。所以,我們可以發現在使用Django的很多網站裡,都是用於作為CMS(內容管理系統)來使用的。

Django的工作方式

Django是一個MTV框架,其架構模板看上去與傳統的MVC架構並沒有太大的區別。Django將MVC中的檢視進一步分解為 Django檢視 和 Django模板兩個部分,分別決定 “展現哪些資料” 和 “如何展現”,使得Django的模板可以根據需要隨時替換,而不僅僅限制於內建的模板。至於MVC控制器部分,由Django框架的URLconf來實現。

具體流程:

瀏覽器進行HTTP request;

Django根據URL configuration分配至對應的View;

View進行資料庫的操作或其它運算;

View層將資料傳送到Template進行渲染,並傳回HttpResponse內容;

瀏覽器根據HTTP response顯示網頁內容。

Django框架的核心包括:一個面向物件的對映器(ORM),用作資料模型(以Python類的形式定義)和關係性資料庫間的媒介;一個基於正則表示式的URL分發器;一個檢視系統,用於處理請求;以及一個模板系統。除此之外還包含:

一個輕量級的、獨立的Web伺服器,用於開發和測試。

一個表單序列化及驗證系統,用於HTML表單和適於資料庫儲存的資料之間的轉換。

一個快取框架,並有幾種快取方式可供選擇。

中介軟體支援,允許對請求處理的各個階段進行干涉。

內建的分發系統允許應用程式中的元件採用預定義的訊號進行相互間的通訊。

一個序列化系統,能夠生成或讀取採用XML或JSON表示的Django模型例項。

一個用於擴充套件模板引擎的能力的系統。

一個可擴充套件的認證系統,使用者登入與許可權檢查,快速開發使用者會話功能。

國際化:內建國際化系統,方便開發出多種語言的網站。

自動化的管理介面:不需要你花大量的工作來建立人員管理和更新內容。

一組產生 RSS 和 Atom 的工具和產生Google 站點地圖 (Google Sitemaps)的工具

一套支援輕量級標記語言(Textile和Markdown)的模板庫

一套協助建立地理資訊系統(GIS)的基礎框架

一個靈活的評論系統

防止跨站請求偽造(cross-site request forgery)的工具

優缺點總結

Django的主要目標是使得開發複雜的、資料庫驅動的網站變得簡單。Django注重元件的重用性和“可插拔性”,敏捷開發和DRY法則(Don't Repeat Yourself)。在Django中Python被普遍使用,甚至包括配置檔案和資料模型。

Django優點:

完美的文件,Django近乎完美的官方文件。

全套的解決方案(full-stackframework + batteries included),基本要什麼有什麼(比如:cache、session、feed、orm、geo、auth),而且全部Django自己造,開發網站應手的工具Django基本都給你做好了,因此開發效率是不用說的。

強大的URL路由配置,Django讓你可以設計出非常優雅的URL。

自助管理後臺,讓你幾乎不用寫一行程式碼就擁有一個完整的後臺管理介面。

Django的缺點:(源自Django堅持自己造所有的輪子,整個系統相對封閉)

系統緊耦合,如果你覺得Django內建的某項功能不是很好,想用喜歡的第三方庫來代替是很難的,比如說的ORM、Template。要在Django裡用SQLAlchemy或Mako幾乎是不可能,即使打了一些補丁用上了也會讓你覺得非常非常彆扭。

自帶的ORM遠不如SQLAlchemy強大,SQLAlchemy是Python世界裡事實上的ORM標準,其它框架都支援SQLAlchemy了,唯獨Django仍然堅持自己的那一套。

Template功能比較弱,不能插入Python程式碼,要寫複雜一點的邏輯需要另外用Python實現Tag或Filter。

URL配置雖然強大,但全部要手寫,高手和初識Django的人配出來的URL會有很大差異。

Django的auth跟其它模組結合緊密,功能也挺強,但做的有點過了,使用者的資料庫schema都給你定好了,比如很多網站要求email地址唯一,可schema裡這個欄位的值不是唯一的。

內容擴充套件:

讓我們首先以外行人的話來說明當您的伺服器收到網站請求時會發生什麼。請求被傳遞給Django並嘗試分析此請求。URL解析程式嘗試將URL與模式列表進行匹配。它從上到下執行此匹配。如果它可以找到匹配並將請求傳遞給檢視,這是相關的功能。該函式 view 可以檢查是否允許請求。它還會生成響應,然後Django將其傳送到使用者的Web瀏覽器。

Django框架的歷史

  • Adrian Holovaty和Simon Willison於2003年秋季在Lawrence Journal-World報紙上建立了Django。
  • Django於2005年7月在BSD許可下公開發布; 以吉他手Django Reinhardt命名。
  • 今天,Django是一個開源專案,在世界各地都有貢獻者。

到此這篇關於python中的django是做什麼的的文章就介紹到這了,更多相關django是什麼內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!