更新時間:2019-09-12 來源:黑馬程序員 瀏覽量:
Python的Web開發(fā),也是工作崗位比較多的領域。如果你對Python的Web開發(fā)有興趣,正打算開始學習使用Python做Web開發(fā)等,那么學習一門基于Python的Web開發(fā)框架是必修課。
Python作為當前最熱門,也是最主要的Web開發(fā)語言之一,在其二十多年的歷史中出現了數十種Web框架,比如Django、Tornado和Flask等,它們有的歷史悠久,有的發(fā)展迅速,還有的已經停止維護。
一、基于Python的代表性Web框架
下面是一些比較有代表性的框架:
Django:
Python 界最全能的 Web 開發(fā)框架,battery-include 各種功能完備,可維護性和開發(fā)速度一級棒。常有人說 Django
慢,其實主要慢在 Django ORM 與數據庫的交互上,所以是否選用 Django,取決于項目對數據庫交互的要求以及各種優(yōu)化。而對于 Django
的同步特性導致吞吐量小的問題,其實可以通過 Celery 等解決,倒不是一個根本問題。Django 的項目代表:Instagram,Guardian。
Tornado:
天生異步,性能強悍是 Tornado 的名片,然而 Tornado 相比 Django
是較為原始的框架,諸多內容需要自己去處理。當然,隨著項目越來越大,框架能夠提供的功能占比越來越小,更多的內容需要團隊自己去實現,而大項目往往需要性能的保證,這時候
Tornado 就是比較好的選擇。Tornado項目代表:知乎。
Flask:
微框架的典范,號稱 Python 代碼寫得最好的項目之一。Flask 的靈活性,也是雙刃劍:能用好 Flask 的,可以做成
Pinterest,用不好就是災難(顯然對任何框架都是這樣)。Flask 雖然是微框架,但是也可以做成規(guī)?;?Flask。加上 Flask
可以自由選擇自己的數據庫交互組件(通常是 Flask-SQLAlchemy),而且加上 celery +redis 等異步特性以后,Flask 的性能相對
Tornado 也不逞多讓,也許Flask 的靈活性可能是某些團隊更需要的。
二、選擇框架的建議
這么多的Web框架,我們沒有那么多的精力全都學一遍,也不可能全部精通,必然要有所取舍,那么該如何選擇呢?有哪些可以參考的原則呢?
下面的建議不一定正確,但可以作為參考:
· 選擇更主流的框架。因為它們的文檔更齊全,技術積累更多,社區(qū)更繁盛,能得到更好的幫助和支持。
· 選擇更活躍的框架。關注項目在GitHub等環(huán)境中的更新頻率、Issue和Pull Request的響應情況。如果一個項目長期沒有更新,或者有一堆的問題需要解決但是沒有得到響應,就不應該是你學習的對象。
· 選擇能夠滿足需求的框架。沒有最好的框架,只有更合適的框架。你所選擇的Web框架不僅需要滿足當前的需求,還要充分考慮項目發(fā)展一段時間后的情況,即前瞻性,避免盲目選擇而導致將來推倒重來的情況。
· 選擇時效性好的框架。在學習和使用框架的時候經常需要查閱和參考各種網絡上的文章、博客和教程,但是需要注意他們的發(fā)表時間。有些框架的相關文章已經很老了,很久沒更新了,應該放棄這種框架;有的框架一直以來都有不斷的新文章、新博客出現,就是比較不錯的選擇。
· 選擇入門友好的框架。這條只對新手適用。詳細的框架文檔、官方教程對新手來說都是極大的幫助和鼓勵。
三、為什么推薦Django框架?
Django具有以下特點:
· 功能完善、要素齊全:該有的、可以沒有的都有,自帶大量常用工具和框架,無須你自定義、組合、增刪及修改。
· 完善的文檔:經過十多年的發(fā)展和完善,Django有廣泛的實踐案例和完善的在線文檔。開發(fā)者遇到問題時可以搜索在線文檔尋求解決方案。
· 強大的數據庫訪問組件:Django的Model層自帶數據庫ORM組件,使得開發(fā)者無須學習其他數據庫訪問技術(SQL、pymysql、SQLALchemy等)。
· 靈活的URL映射:Django使用正則表達式管理URL映射,靈活性高。新版的2.0,進一步提高了URL編寫的優(yōu)雅性。
· 豐富的Template模板語言:類似jinjia模板語言,不但原生功能豐富,還可以自定義模板標簽,并且與其ORM的用法非常相似。
· 自帶后臺管理系統(tǒng)admin:只需要通過簡單的幾行配置和代碼就可以實現一個完整的后臺數據管理控制平臺。
· 完整的錯誤信息提示:在開發(fā)調試過程中如果出現運行錯誤或者異常,Django可以提供非常完整的錯誤信息幫助定位問題。
Python web框架對比
1.主流、活躍程度:
從Github的數據來看,Django的開發(fā)非?;钴S,迭代速度也非???。
2.是否可以滿足需求:
Django以要素齊全、工具豐富、框架龐大著稱,基本上別的框架有的它有,別的框架沒有的它也有,如果Django滿足不了需求,那么別的框架同樣也一樣。
3.時效性:
Django有很長的開發(fā)和實踐過程,或早或晚的文檔、教程、幫助、博客等等非常多,資料更新速度也很快,比如博主個人網站的Django教程,大家沒事可以逛逛,^-^。
4.入門友好程度:
一個框架能否流行起來,對新手入門是否友好非常關鍵。Django在這一點做的非常好。
推薦了解黑馬IT培訓課程:
java培訓課程
python+人工智能課程
大數據培訓課程