Web開發是Python語言應用領域的重要部分,也是工做崗位比較多的領域。若是你對基於Python的Web開發有興趣,正打算開始學習使用Python作Web開發,或者已是一個Web開發者有工做須要,要作Web服務、自動化運維、數據的圖形化展現等,那麼學習一門基於Python的Web開發框架是必修課。前端
Python做爲當前最火爆最熱門,也是最主要的Web開發語言之一,在其二十多年的歷史中出現了數十種Web框架,好比Django、Tornado、Flask、Twisted、Bottle和Web.py等,它們有的歷史悠久,有的發展迅速,還有的已經中止維護。python
下面是一些比較有表明性的框架:mysql
發佈於2003年,是當前Python世界裏最負盛名且最成熟的Web框架,最初被用來製做在線新聞的Web站點。Django的各模塊之間結合得比較緊密,因此在功能強大的同時又是一個相對封閉的系統(依然是能夠自定義的),可是其健全的在線文檔及開發社區,使開發者在遇到問題時能找到解決辦法。web
一個強大的、支持協程、高效併發且可擴展的Web服務器,發佈於2009年9月,應用於FriendFeed、Facebook等社交網站。它的強項在於能夠利用異步協程機制實現高併發的服務。正則表達式
Python Web框架家族裏比較年輕的一個,發佈於2010年,它吸取了其餘框架的優勢而且把本身的主要領域定義在了微小項目上,以短小精幹,簡潔明瞭著稱。sql
一個有着十多年曆史的開源事件驅動框架。它不像前三種着眼於Web應用開發,而是適用從傳輸層到自定義應用協議的全部類型的網絡程序的開發,並能在不一樣的操做系統上提供很高的運行效率。可是,目前對Python3的支持有限,建議使用Python2.7。數據庫
這麼多的Web框架,咱們沒有那麼多的精力全都學一遍,也不可能所有精通,必然要有所取捨,那麼該如何選擇呢?有哪些能夠參考的原則呢?django
下面的原則不必定正確,但能夠做爲參考:flask
首先介紹一下Django,Django具備如下特色:緩存
那麼,咱們根據前面的選擇原則咱們來逐條對比一下:
從Github的數據來看,Django的開發很是活躍,迭代速度也很是快。
Django以要素齊全、工具豐富、框架龐大著稱,基本上別的框架有的它有,別的框架沒有的它也有,若是Django知足不了需求,那麼別的框架一樣也同樣。
Django有很長的開發和實踐過程,或早或晚的文檔、教程、幫助、博客等等很是多,資料更新速度也很快,好比博主我的網站的Django教程,你們沒事能夠逛逛,^-^。
一個框架可否流行起來,對新手入門是否友好很是關鍵。Django在這一點作的很是好。
不能光說優勢,也說說一些缺點:
其實我不認同這一條,我真不認爲這是個缺點。
首先,對於新手,Django集成好的工具和部件,讓你無須再費腦力去學習如何安裝、調試、集成、兼容別的工具。Django幫你把它們都集成好了,並且保證兼容性、可用性和方便性,就比如聯想一體機,開機即用,效率也高。而一些如flask的框架,雖然精簡,可是你要本身安裝各類工具、ORM、插件等等,比如DIY電腦,在用以前,要知道買什麼配件,怎麼搭配,怎麼組裝,怎麼配置效率才高,將新手的熱情大量消耗在非關鍵性的內容上。
其次,對於老手,Django也是開放的,你徹底能夠關閉沒必要要的功能,忽略不使用的組件,或者自定義但願的組件,包括ORM和Template在內,均可以自由選擇。
所以,我認爲Django系統龐大、捆綁工具不是問題。
從本質上來講,Tornado在異步協程機制實現高併發的服務上要更強一點。Django在這方面有追趕的目標,但這不是說Django就差到不能用了,對麼?
想要熟練地使用Django進行Web開發,設計生產環境可用的,可以應對必定規模訪問量的Web應用,開發者要學會的遠遠不止Django自己。Python基礎、環境搭建、前端語言、API設計、網站架構、系統管理、持續集成、服務化、數據處理、併發處理等等,都是相關的知識領域,包括但不限於如下的內容:
除此以外,還要對業務有深入理解,可以寫出可維護性足夠高的代碼。固然,以上都是對經驗豐富的開發者而言,對於新手剛入門者,咱們朝着這個目標努力學習就好。
下面是基於Python的Web開發技術棧: