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