Django 簡介

2021-10-19 19:28 更新

Django 簡介

Django 是用Python開發(fā)的一個免費開源的Web框架,可以用于快速搭建高性能,優(yōu)雅的網站!采用了MVC的框架模式,即模型M,視圖V和控制器C,也可以稱為MVT模式,模型M,視圖V,模板T。

它最初是被開發(fā)來用于管理勞倫斯出版集團旗下的一些以新聞內容為主的站點的, 并于2005年7月在BSD許可證下公布.

這套框架是以比利時的吉普賽爵士吉他手Django Reinhardt來命名的.

Django 的主要目標是使得開發(fā)復雜的、數據庫驅動的網站變得簡單。Django 注重組件的重用性和“可插拔性”,敏捷開發(fā)和 DRY 法則(Don’t Repeat Yourself)。在 Django 中 Python 被普遍使用,甚至包括配置文件和數據模型。

Django 于 2008 年 6 月 17 日正式成立基金會。

Django 架構分析


Django 框架的組成部分

Django 框架的核心包括:

  • 一個 面向對象 的映射器,用作數據模型(以 Python 類的形式定義)和關系型數據庫間的介質;
  • 一個基于正則表達式的 URL 分發(fā)器;
  • 一個視圖系統(tǒng),用于處理請求;
  • 一個模板系統(tǒng)。

核心框架中還包括:

  • 一個輕量級的、獨立的 Web 服務器,用于開發(fā)和測試。
  • 一個表單序列化及驗證系統(tǒng),用于 HTML 表單和適于數據庫存儲的數據之間的轉換。
  • 一個緩存框架,并有幾種緩存方式可供選擇。
  • 中間件支持,允許對請求處理的各個階段進行干涉。
  • 內置的分發(fā)系統(tǒng)允許應用程序中的組件采用預定義的信號進行相互間的通信。
  • 一個序列化系統(tǒng),能夠生成或讀取采用 XML 或 JSON 表示的 Django 模型實例。
  • 一個用于擴展模板引擎的能力的系統(tǒng)。

Django 包含了很多應用在它的 contrib 包中,這些包括:

  • 一個可擴展的認證系統(tǒng)
  • 動態(tài)站點管理頁面
  • 一組產生 RSS 和 Atom 的工具
  • 一個靈活的評論系統(tǒng)
  • 產生 Google 站點地圖(Google Sitemaps)的工具
  • 防止跨站請求偽造(cross-site request forgery)的工具
  • 一套支持輕量級標記語言(Textile 和 Markdown)的模板庫
  • 一套協(xié)助創(chuàng)建地理信息系統(tǒng)(GIS)的基礎框架

Django 的內置應用

  • Django 包含了非常多應用在它的"contrib"包中, 這些包含: 
  • 一個可擴展的認證系統(tǒng);
  • 動態(tài)站點管理頁面;
  • 一組產生RSS和Atom的工具;
  • 一個靈活的評論系統(tǒng);
  • 產生Google站點地圖(Google Sitemaps)的工具;
  • 防止跨站請求偽造(cross-site request forgery)的工具;
  • 一套支持輕量級標記語言(Textile和Markdown)的模板庫;
  • 一套協(xié)助創(chuàng)建地理信息系統(tǒng)(GIS)的基礎框架;

Django 的優(yōu)缺點總結

Django 的優(yōu)點

  • 完美的文檔,Django近乎完美的官方文檔。
  • 強大的URL路由配置,Django讓你可以設計出非常優(yōu)雅的URL。
  • 自助管理后臺,讓你幾乎不用寫一行代碼就擁有一個完整的后臺管理界面。
  • 全套的解決方案(full-stackframework + batteries included),基本要什么有什么(比如:cache、session、feed、orm、geo、auth),而且全部Django自己造,開發(fā)網站應手的工具Django基本都給你做好了,因此開發(fā)效率是不用說的。

Django 的缺點

  • Template功能比較弱,不能插入Python代碼,要寫復雜一點的邏輯需要另外用Python實現Tag或Filter。
  • URL配置雖然強大,但全部要手寫,高手和初識Django的人配出來的URL會有很大差異。
  • 自帶的ORM遠不如SQLAlchemy強大,SQLAlchemy是Python世界里事實上的ORM標準,其它框架都支持SQLAlchemy了,唯獨Django仍然堅持自己的那一套。
  • Django的auth跟其它模塊結合緊密,功能也挺強,但做的有點過了,用戶的數據庫schema都給你定好了,比如很多網站要求email地址唯一,可schema里這個字段的值不是唯一的。
  • 系統(tǒng)緊耦合,如果你覺得Django內置的某項功能不是很好,想用喜歡的第三方庫來代替是很難的,比如說的ORM、Template。要在Django里用SQLAlchemy或Mako幾乎是不可能,即使打了一些補丁用上了也會讓你覺得非常非常別扭。


以上內容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號