爲何選擇Django?

Web開發是Python語言應用領域的重要部分,也是工做崗位比較多的領域。若是你對基於Python的Web開發有興趣,正打算開始學習使用Python作Web開發,或者已是一個Web開發者有工做須要,要作Web服務、自動化運維、數據的圖形化展現等,那麼學習一門基於Python的Web開發框架是必修課。前端

Python做爲當前最火爆最熱門,也是最主要的Web開發語言之一,在其二十多年的歷史中出現了數十種Web框架,好比Django、Tornado、Flask、Twisted、Bottle和Web.py等,它們有的歷史悠久,有的發展迅速,還有的已經中止維護。python

1、基於Python的表明性Web框架

下面是一些比較有表明性的框架:mysql

Django:

image.png-11.5kB

發佈於2003年,是當前Python世界裏最負盛名且最成熟的Web框架,最初被用來製做在線新聞的Web站點。Django的各模塊之間結合得比較緊密,因此在功能強大的同時又是一個相對封閉的系統(依然是能夠自定義的),可是其健全的在線文檔及開發社區,使開發者在遇到問題時能找到解決辦法。web

Tornado:

image.png-25.1kB

一個強大的、支持協程、高效併發且可擴展的Web服務器,發佈於2009年9月,應用於FriendFeed、Facebook等社交網站。它的強項在於能夠利用異步協程機制實現高併發的服務。正則表達式

Flask:

image.png-60.5kB

Python Web框架家族裏比較年輕的一個,發佈於2010年,它吸取了其餘框架的優勢而且把本身的主要領域定義在了微小項目上,以短小精幹,簡潔明瞭著稱。sql

Twisted:

image.png-41.1kB

一個有着十多年曆史的開源事件驅動框架。它不像前三種着眼於Web應用開發,而是適用從傳輸層到自定義應用協議的全部類型的網絡程序的開發,並能在不一樣的操做系統上提供很高的運行效率。可是,目前對Python3的支持有限,建議使用Python2.7。數據庫

2、選擇框架的原則

這麼多的Web框架,咱們沒有那麼多的精力全都學一遍,也不可能所有精通,必然要有所取捨,那麼該如何選擇呢?有哪些能夠參考的原則呢?django

下面的原則不必定正確,但能夠做爲參考:flask

  • 選擇更主流的框架。由於它們的文檔更齊全,技術積累更多,社區更繁盛,能獲得更好的幫助和支持。
  • 選擇更活躍的框架。關注項目在GitHub等環境中的更新頻率、Issue和Pull Request的響應狀況。若是一個項目長期沒有更新,或者有一堆的問題須要解決可是沒有獲得響應,就不該該是你學習的對象。
  • 選擇可以知足需求的框架。沒有最好的框架,只有更合適的框架。你所選擇的Web框架不只須要知足當前的需求,還要充分考慮項目發展一段時間後的狀況,即前瞻性,避免盲目選擇而致使未來推倒重來的狀況。
  • 選擇時效性好的框架。在學習和使用框架的時候常常須要查閱和參考各類網絡上的文章、博客和教程,可是須要注意他們的發表時間。有些框架的相關文章已經很老了,好久沒更新了,應該放棄這種框架;有的框架一直以來都有不斷的新文章、新博客出現,就是比較不錯的選擇。
  • 選擇入門友好的框架。這條只對新手適用。詳細的框架文檔、官方教程對新手來講都是極大的幫助和鼓勵。

3、爲何選擇Django?

首先介紹一下Django,Django具備如下特色:緩存

  • 功能完善、要素齊全:該有的、能夠沒有的都有,自帶大量經常使用工具和框架,無須你自定義、組合、增刪及修改。
  • 完善的文檔:通過十多年的發展和完善,Django有普遍的實踐案例和完善的在線文檔。開發者遇到問題時能夠搜索在線文檔尋求解決方案。
  • 強大的數據庫訪問組件:Django的Model層自帶數據庫ORM組件,使得開發者無須學習其餘數據庫訪問技術(SQL、pymysql、SQLALchemy等)。
  • 靈活的URL映射:Django使用正則表達式管理URL映射,靈活性高。新版的2.0,進一步提升了URL編寫的優雅性。
  • 豐富的Template模板語言:相似jinjia模板語言,不但原生功能豐富,還能夠自定義模板標籤,而且與其ORM的用法很是類似。
  • 自帶後臺管理系統admin:只須要經過簡單的幾行配置和代碼就能夠實現一個完整的後臺數據管理控制平臺。
  • 完整的錯誤信息提示:在開發調試過程當中若是出現運行錯誤或者異常,Django能夠提供很是完整的錯誤信息幫助定位問題。

那麼,咱們根據前面的選擇原則咱們來逐條對比一下:

1.主流、活躍程度:

image.png-100.2kB

從Github的數據來看,Django的開發很是活躍,迭代速度也很是快。

2.是否能夠知足需求:

Django以要素齊全、工具豐富、框架龐大著稱,基本上別的框架有的它有,別的框架沒有的它也有,若是Django知足不了需求,那麼別的框架一樣也同樣。

3.時效性:

Django有很長的開發和實踐過程,或早或晚的文檔、教程、幫助、博客等等很是多,資料更新速度也很快,好比博主我的網站的Django教程,你們沒事能夠逛逛,^-^。

4.入門友好程度:

一個框架可否流行起來,對新手入門是否友好很是關鍵。Django在這一點作的很是好。

4、Django的不足

不能光說優勢,也說說一些缺點:

  • 框架龐大,被認爲不夠精簡、捆綁的內容太多

其實我不認同這一條,我真不認爲這是個缺點。

首先,對於新手,Django集成好的工具和部件,讓你無須再費腦力去學習如何安裝、調試、集成、兼容別的工具。Django幫你把它們都集成好了,並且保證兼容性、可用性和方便性,就比如聯想一體機,開機即用,效率也高。而一些如flask的框架,雖然精簡,可是你要本身安裝各類工具、ORM、插件等等,比如DIY電腦,在用以前,要知道買什麼配件,怎麼搭配,怎麼組裝,怎麼配置效率才高,將新手的熱情大量消耗在非關鍵性的內容上。

其次,對於老手,Django也是開放的,你徹底能夠關閉沒必要要的功能,忽略不使用的組件,或者自定義但願的組件,包括ORM和Template在內,均可以自由選擇。

所以,我認爲Django系統龐大、捆綁工具不是問題。

  • 在異步通訊方面略有欠缺

從本質上來講,Tornado在異步協程機制實現高併發的服務上要更強一點。Django在這方面有追趕的目標,但這不是說Django就差到不能用了,對麼?


5、基於Python進行Web開發的技術棧

想要熟練地使用Django進行Web開發,設計生產環境可用的,可以應對必定規模訪問量的Web應用,開發者要學會的遠遠不止Django自己。Python基礎、環境搭建、前端語言、API設計、網站架構、系統管理、持續集成、服務化、數據處理、併發處理等等,都是相關的知識領域,包括但不限於如下的內容:

  • 熟悉Python語言
  • 對前端的HTML\CSS\Javascript比較熟悉
  • 對網絡基礎,好比HTTP、TCP/IP等比較熟悉
  • 熟悉數據庫、緩存、消息隊列等技術的使用場景和使用方法
  • 平常能使用Linux或Mac系統工做(Windows屬於標配)
  • 有性能優化經驗,能快速定位問題

除此以外,還要對業務有深入理解,可以寫出可維護性足夠高的代碼。固然,以上都是對經驗豐富的開發者而言,對於新手剛入門者,咱們朝着這個目標努力學習就好。

下面是基於Python的Web開發技術棧:

image.png-27.6kB


歡迎你們訪問個人我的網站《劉江的博客和教程》www.liujiangblog.com

主要分享Python 及Django教程以及相關的博客!

相關文章
相關標籤/搜索