django框架介紹

主要內容php

1.        Django框架發展html

2.        Django架構,MTV模式python

3.        開發流程web

4.        開發實例——Poll正則表達式

python下各類框架sql

一個完整的Web應用框架包括下面功能的支持數據庫

服務發佈django

URL分發設計模式

模板支持瀏覽器

數據庫處理

Python框架通常都支持前3個方面,按對4個功能的支持狀況分類以下:

平臺性框架:不依賴數據庫,更關注服務的高校構建和運行平臺的穩定。表明性框架:Zope和Twisted

輕小型框架:認爲數據庫不是應用的必要因素,更關注友好快速的簡單任務的開發。表明性框架:Cherry,Quixote和web.py,沒有內置的數據庫支持模塊。

一站式框架:認爲數據庫是應用的重要因素,關注如何僅基於自己快速實現一個功能性網站。表明性框架:Django,TurboGears

Django簡介

Django(維基百科) Django是一個開放源代碼的Web應用框架,由Python寫成。採用了MVC的軟件設計模式,即模型M,視圖V和控制器C。它最初是被開發來用於管理勞倫斯出版集團旗下的一些以新聞內容爲主的網站的。並於2005年7月在BSD許可證下發布。這套框架是以比利時的吉普賽爵士吉他手Django Reinhardt來命名的。

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

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

Django吸引人的特色

在Python各類web框架中,Django的文檔最完善、市場佔有率最高、招聘職位最多!

優勢

l  完美的文檔,Django的成功,我以爲很大一部分緣由要歸功於Django近乎完美的官方文檔(包括Djangobook)。

l  全套的解決方案,Django象Rails同樣,提供全套的解決方案(full-stackframework + batteries included),基本要什麼有什麼(好比:cache、session、feed、orm、geo、auth),並且所有Django本身造,開發網站應手的工具Django基本都給你作好了,所以開發效率是不用說的,出了問題也算好找,不在你的代碼裏就在Django的源碼裏。

l  強大的URL路由配置,Django讓你能夠設計出很是優雅的URL,在Django裏你基本能夠跟醜陋的GET參數說拜拜。

l  自助管理後臺,admin interface是Django裏比較吸引眼球的一項contrib,讓你幾乎不用寫一行代碼就擁有一個完整的後臺管理界面。

缺點(源自Django堅持本身造全部的輪子,整個系統相對封閉)

l  系統緊耦合,若是你以爲Django內置的某項功能不是很好,想用喜歡的第三方庫來代替是很難的,好比下面將要說的ORM、Template。要在Django裏用SQLAlchemy或Mako幾乎是不可能,即便打了一些補丁用上了也會讓你以爲很是很是彆扭。

l  Django自帶的ORM遠不如SQLAlchemy強大,除了在Django這一畝三分地,SQLAlchemy是Python世界裏事實上的ORM標準,其它框架都支持SQLAlchemy了,惟獨Django仍然堅持本身的那一套。Django的開發人員對SQLAlchemy的支持也是有過討論和嘗試的,不過最終仍是放棄了,估計是代價過高且跟Django其它的模塊很難合到一塊。

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

l  URL配置雖然強大,但所有要手寫,這一點跟Rails的Conventionover configuration的理念徹底相左,高手和初識Django的人配出來的URL會有很大差別。

l  讓人糾結的auth模塊,Django的auth跟其它模塊結合緊密,功能也挺強的,就是作的有點過了,用戶的數據庫schema都給你定好了,這樣問題就來了,好比不少網站要求email地址惟一,可schema裏這個字段的值不是惟一的,糾結是必須的了。

l  Python文件作配置文件,而不是更常見的ini、xml或yaml等形式。這自己不是什麼問題,但是由於理論上來講settings的值是可以動態的改變的(雖然你們不會這麼幹),但這不是最佳實踐的體現。

Django大包大攬,用它來快速開發一些Web運用是很不錯的。若是你順着Django的設計哲學來,你會以爲Django很好用,越用越爽;相反,你若是不能融入或接受Django的設計哲學,你用Django必定會很痛苦,趁早放棄的好。

組件

Django框架的核心包括:一個 面向對象 的映射器,用做數據模型(以Python的形式定義)和關聯性數據庫間的媒介;一個基於正則表達式的URL分發器;一個視圖系統,用於處理請求;以及一個模板系統。

核心框架中還包括:

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

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

l 一個緩存框架,並有幾種緩存方式可供選擇。

中間件支持,容許對請求處理的各個階段進行干涉。

l 內置的分發系統容許應用程序中的組件採用預約義的信號進行相互間的通訊。

l 一個序列化系統,可以生成或讀取採用XMLJSON表示的Django模型實例。

l 一個用於擴展模板引擎的能力的系統。

內置應用

Django 包含了不少應用在它的"contrib"包中,這些包括:

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

服務的部署

Django 能夠運行在啓用了 mod python 的 Apache 2上,或是任何WSGI兼容的Web服務器。Django也有啓動FastCGI服務的能力,所以可以應用於任何支持FastCGI的機器上。

下列數據庫引擎被Django官方支持:

MicrosoftSQL Server的適配器正在開發中,處於試驗階段。(注:SQL Server的支持在1.0版本中已經被徹底去除)

Django1.0已經能夠利用Jython運行在任何J2EE服務器。

開發簡單應用的步驟

1.  進入目標文件夾,創建項目django-admin.pystartproject  mysite。Django框架自動爲咱們創建所須要的項目文件夾和一些配置文件

2.  進入項目文件夾,創建應用django-admin.py startapppolls。Django框架會自動生成所須要的models.py和views.py等文件

3.  編輯settings.py,將新建的應用Polls,加入到項目中,INSTALLEN_APPS加入一行,‘mysite.polls’,

4.  配置urls.py,加入指望的url規則,訪問mysite.polls.views中的方法

5.  編輯views.py,編寫2個方法

6.  啓動內置開發服務器,django python manage.pyrunserver

7.       在瀏覽器中輸入http://localhost:8000/訪問測試頁面

 

1.  另注:數據庫鏈接中。python 2.5及之後的版本內涵sqlite數據庫,不須要另外安裝。name是必定要是包含完整路徑的文件名稱。若文件本來不存在,在使用同步數據庫後,系統會爲每一個應用自動建立所須要的table,其餘數據庫都必須填寫用戶名和密碼,而且須要事先建立好數據庫。

2.  app能夠放在任何python路徑上。放在與manage.py同級目錄中,將做爲該工程的頂級模塊,而不是mysite的子模塊。

3.  若是寫view時採用硬編碼方式,要改變頁面顯示方式,就要改變python代碼。解決方案:利用template系統從python中分離出設計。解決方案:利用template系統從python中分離出設計

 

應用部署

詳見Django book

Django框架開發效率

用django構建的網站

http://www.djangosites.org/官方展現

在該網站上能夠得到一個應用網站的源碼,以供學習參考。

l  歐洲一個日化網上商店

l  http://www.chinesehour.com/中文學習網站

l  焦點網站http://www.focus.com/  焦點觀察,與專家對話。框架很是適合

l  國際象棋俱樂部https://secure.chess.com/chesspark.html在線國際象棋

l  代碼管理網站 http://dpaste.com/

參考資料

http://www.360doc.com/content/09/1206/13/50698_10483406.shtml#Django MVC模式,Django發展

http://simple-is-better.com/news/385#digRuby 跟 Python 本質上不一樣,Python是很是簡約的語言

http://www.360doc.com/content/12/0229/11/2902158_190487111.shtml淺談五大Python Web框架

http://djangobook.py3k.cn/2.0/DjangoBook2.0中文翻譯(很好)

Django官網https://www.djangoproject.com/

http://codinn.com/projects/django-best-practices/view/Django最佳實踐

相關文章
相關標籤/搜索