全國(guó)咨詢(xún)/投訴熱線:400-618-4000

首頁(yè)技術(shù)文章正文

Python的Web開(kāi)發(fā)框架哪個(gè)好?

更新時(shí)間:2019-09-12 來(lái)源:黑馬程序員 瀏覽量:

Python的Web開(kāi)發(fā),也是工作崗位比較多的領(lǐng)域。如果你對(duì)Python的Web開(kāi)發(fā)有興趣,正打算開(kāi)始學(xué)習(xí)使用Python做Web開(kāi)發(fā)等,那么學(xué)習(xí)一門(mén)基于Python的Web開(kāi)發(fā)框架是必修課。

Python作為當(dāng)前最熱門(mén),也是最主要的Web開(kāi)發(fā)語(yǔ)言之一,在其二十多年的歷史中出現(xiàn)了數(shù)十種Web框架,比如Django、Tornado和Flask等,它們有的歷史悠久,有的發(fā)展迅速,還有的已經(jīng)停止維護(hù)。

1568254709265_python.jpg



一、基于Python的代表性Web框架

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

Django:

Python 界最全能的 Web 開(kāi)發(fā)框架,battery-include 各種功能完備,可維護(hù)性和開(kāi)發(fā)速度一級(jí)棒。常有人說(shuō) Django 慢,其實(shí)主要慢在 Django ORM 與數(shù)據(jù)庫(kù)的交互上,所以是否選用 Django,取決于項(xiàng)目對(duì)數(shù)據(jù)庫(kù)交互的要求以及各種優(yōu)化。而對(duì)于 Django 的同步特性導(dǎo)致吞吐量小的問(wèn)題,其實(shí)可以通過(guò) Celery 等解決,倒不是一個(gè)根本問(wèn)題。Django 的項(xiàng)目代表:Instagram,Guardian。

Tornado:

天生異步,性能強(qiáng)悍是 Tornado 的名片,然而 Tornado 相比 Django 是較為原始的框架,諸多內(nèi)容需要自己去處理。當(dāng)然,隨著項(xiàng)目越來(lái)越大,框架能夠提供的功能占比越來(lái)越小,更多的內(nèi)容需要團(tuán)隊(duì)自己去實(shí)現(xiàn),而大項(xiàng)目往往需要性能的保證,這時(shí)候 Tornado 就是比較好的選擇。Tornado項(xiàng)目代表:知乎。

Flask:

微框架的典范,號(hào)稱(chēng) Python 代碼寫(xiě)得最好的項(xiàng)目之一。Flask 的靈活性,也是雙刃劍:能用好 Flask 的,可以做成 Pinterest,用不好就是災(zāi)難(顯然對(duì)任何框架都是這樣)。Flask 雖然是微框架,但是也可以做成規(guī)?;?Flask。加上 Flask 可以自由選擇自己的數(shù)據(jù)庫(kù)交互組件(通常是 Flask-SQLAlchemy),而且加上 celery +redis 等異步特性以后,F(xiàn)lask 的性能相對(duì) Tornado 也不逞多讓?zhuān)苍SFlask 的靈活性可能是某些團(tuán)隊(duì)更需要的。

二、選擇框架的建議

這么多的Web框架,我們沒(méi)有那么多的精力全都學(xué)一遍,也不可能全部精通,必然要有所取舍,那么該如何選擇呢?有哪些可以參考的原則呢?

下面的建議不一定正確,但可以作為參考:

· 選擇更主流的框架。因?yàn)樗鼈兊奈臋n更齊全,技術(shù)積累更多,社區(qū)更繁盛,能得到更好的幫助和支持。

· 選擇更活躍的框架。關(guān)注項(xiàng)目在GitHub等環(huán)境中的更新頻率、Issue和Pull Request的響應(yīng)情況。如果一個(gè)項(xiàng)目長(zhǎng)期沒(méi)有更新,或者有一堆的問(wèn)題需要解決但是沒(méi)有得到響應(yīng),就不應(yīng)該是你學(xué)習(xí)的對(duì)象。

· 選擇能夠滿足需求的框架。沒(méi)有最好的框架,只有更合適的框架。你所選擇的Web框架不僅需要滿足當(dāng)前的需求,還要充分考慮項(xiàng)目發(fā)展一段時(shí)間后的情況,即前瞻性,避免盲目選擇而導(dǎo)致將來(lái)推倒重來(lái)的情況。

· 選擇時(shí)效性好的框架。在學(xué)習(xí)和使用框架的時(shí)候經(jīng)常需要查閱和參考各種網(wǎng)絡(luò)上的文章、博客和教程,但是需要注意他們的發(fā)表時(shí)間。有些框架的相關(guān)文章已經(jīng)很老了,很久沒(méi)更新了,應(yīng)該放棄這種框架;有的框架一直以來(lái)都有不斷的新文章、新博客出現(xiàn),就是比較不錯(cuò)的選擇。

· 選擇入門(mén)友好的框架。這條只對(duì)新手適用。詳細(xì)的框架文檔、官方教程對(duì)新手來(lái)說(shuō)都是極大的幫助和鼓勵(lì)。

三、為什么推薦Django框架?

Django具有以下特點(diǎn):

· 功能完善、要素齊全:該有的、可以沒(méi)有的都有,自帶大量常用工具和框架,無(wú)須你自定義、組合、增刪及修改。

· 完善的文檔:經(jīng)過(guò)十多年的發(fā)展和完善,Django有廣泛的實(shí)踐案例和完善的在線文檔。開(kāi)發(fā)者遇到問(wèn)題時(shí)可以搜索在線文檔尋求解決方案。

· 強(qiáng)大的數(shù)據(jù)庫(kù)訪問(wèn)組件:Django的Model層自帶數(shù)據(jù)庫(kù)ORM組件,使得開(kāi)發(fā)者無(wú)須學(xué)習(xí)其他數(shù)據(jù)庫(kù)訪問(wèn)技術(shù)(SQL、pymysql、SQLALchemy等)。

· 靈活的URL映射:Django使用正則表達(dá)式管理URL映射,靈活性高。新版的2.0,進(jìn)一步提高了URL編寫(xiě)的優(yōu)雅性。

· 豐富的Template模板語(yǔ)言:類(lèi)似jinjia模板語(yǔ)言,不但原生功能豐富,還可以自定義模板標(biāo)簽,并且與其ORM的用法非常相似。

· 自帶后臺(tái)管理系統(tǒng)admin:只需要通過(guò)簡(jiǎn)單的幾行配置和代碼就可以實(shí)現(xiàn)一個(gè)完整的后臺(tái)數(shù)據(jù)管理控制平臺(tái)。

· 完整的錯(cuò)誤信息提示:在開(kāi)發(fā)調(diào)試過(guò)程中如果出現(xiàn)運(yùn)行錯(cuò)誤或者異常,Django可以提供非常完整的錯(cuò)誤信息幫助定位問(wèn)題。

Python web框架對(duì)比

1.主流、活躍程度:

從Github的數(shù)據(jù)來(lái)看,Django的開(kāi)發(fā)非?;钴S,迭代速度也非???。

2.是否可以滿足需求:

Django以要素齊全、工具豐富、框架龐大著稱(chēng),基本上別的框架有的它有,別的框架沒(méi)有的它也有,如果Django滿足不了需求,那么別的框架同樣也一樣。

3.時(shí)效性:

Django有很長(zhǎng)的開(kāi)發(fā)和實(shí)踐過(guò)程,或早或晚的文檔、教程、幫助、博客等等非常多,資料更新速度也很快,比如博主個(gè)人網(wǎng)站的Django教程,大家沒(méi)事可以逛逛,^-^。

4.入門(mén)友好程度:

一個(gè)框架能否流行起來(lái),對(duì)新手入門(mén)是否友好非常關(guān)鍵。Django在這一點(diǎn)做的非常好。

推薦了解黑馬IT培訓(xùn)課程:
java培訓(xùn)課程
python+人工智能課程
大數(shù)據(jù)培訓(xùn)課程

分享到:
在線咨詢(xún) 我要報(bào)名
和我們?cè)诰€交談!