您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)目前最受歡迎的12個(gè)Python web框架分別是什么,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
Python作為膠水語(yǔ)言,隨AI時(shí)代來臨備受追捧。其發(fā)展方向有很多的,比如:爬蟲、數(shù)據(jù)分析、自動(dòng)化測(cè)試、人工智能、運(yùn)維還有web開發(fā)等。
Python程序員有很多很好的選擇來創(chuàng)建Web應(yīng)用程序和API;Django,Weppy,Bottle和Flask引領(lǐng)潮流。
如果正在開發(fā)一個(gè)Web應(yīng)用程序并且已經(jīng)選擇使用Python作為構(gòu)建它的語(yǔ)言,那么這是一個(gè)明智的選擇。Python的開發(fā)成熟度,強(qiáng)大的庫(kù)以及廣泛的實(shí)際應(yīng)用使其成為Web開發(fā)的必需。
其實(shí),Python開發(fā)web在國(guó)內(nèi)可能沒那么盛行,但在國(guó)外卻發(fā)展迅猛。國(guó)內(nèi)有些知名網(wǎng)站,像知乎、網(wǎng)易、豆瓣都是用Python開發(fā)的;國(guó)外有Quora(社交問答網(wǎng)站)、Google、Pinterest(圖片社交分享網(wǎng)站)。
所以,今天分享一下比較出名的12個(gè)Python web框架。
1.Django
Django是一個(gè)開源的Web應(yīng)用框架,由Python寫成,支持許多數(shù)據(jù)庫(kù)引擎,可以讓W(xué)eb開發(fā)變得迅速和可擴(kuò)展,并會(huì)不斷的版本更新以匹配Python最新版本,如果是新手程序員,可以從這個(gè)框架入手。
Django為人所稱道的地方主要有:
完美的文檔,Django的成功,很大一部分原因要?dú)w功于Django近乎完美的官方文檔
2、全套的解決方案,Django提供全套的解決方案,基本要什么有什么,而且全部Django自己造,開發(fā)網(wǎng)站應(yīng)手的工具Django基本都給你做好了,因此開發(fā)效率是不用說的,出了問題也算好找,不在你的代碼里就在Django的源碼里。
3、強(qiáng)大的URL路由配置,Django讓你可以設(shè)計(jì)出非常優(yōu)雅的URL,在Django里你基本可以跟丑陋的GET參數(shù)說拜拜。
4、自助管理后臺(tái),admin interface是Django里比較吸引眼球的一項(xiàng)contrib,讓你幾乎不用寫一行代碼就擁有一個(gè)完整的后臺(tái)管理界面。
5、系統(tǒng)緊耦合,如果你覺得Django內(nèi)置的某項(xiàng)功能不是很好,想用喜歡的第三方庫(kù)來代替是很難的,比如下面將要說的ORM、Template。要在Django里用SQLAlchemy或Mako幾乎是不可能,即使打了一些補(bǔ)丁用上了也會(huì)讓你覺得非常非常別扭。
6、Template功能比較弱,不能插入Python代碼,要寫復(fù)雜一點(diǎn)的邏輯需要另外用Python實(shí)現(xiàn)Tag或Filter。
Django是走大而全的方向,注重的是高效開發(fā),它最出名的是其全自動(dòng)化的管理后臺(tái):只需要使用起ORM,做簡(jiǎn)單的對(duì)象定義,它就能自動(dòng)生成數(shù)據(jù)庫(kù)結(jié)構(gòu)、以及全功能的管理后臺(tái)。
2.CubicWeb
CubicWeb被稱為“一個(gè)支持重用和面向?qū)ο笤O(shè)計(jì)的語(yǔ)義Web應(yīng)用程序框架。”這是一個(gè)有趣的系統(tǒng),強(qiáng)調(diào)使用抽象和可重用的代碼塊稱為“多維數(shù)據(jù)集”,但對(duì)于某些開發(fā)人員來說可能過于抽象或特殊。
多維數(shù)據(jù)集是具有模式(數(shù)據(jù)模型),實(shí)體(編程邏輯)和視圖的軟件組件。通過組合多個(gè)立方體,每個(gè)立方體執(zhí)行自己的任務(wù),可以通過重用自己的代碼和其他代碼來編寫軟件應(yīng)用程序。
3.Web2py
Web2py是一個(gè)用Python語(yǔ)言編寫的免費(fèi)的開源Web框架,旨在敏捷快速的開發(fā)Web應(yīng)用,具有快速、可擴(kuò)展、安全以及可移植的數(shù)據(jù)庫(kù)驅(qū)動(dòng)的應(yīng)用,遵循LGPLv3開源協(xié)議。
Web2py提供一站式的解決方案,整個(gè)開發(fā)過程都可以在瀏覽器上進(jìn)行,提供了Web版的在線開發(fā),HTML模版編寫,靜態(tài)文件的上傳,數(shù)據(jù)庫(kù)的編寫的功能。其它的還有日志功能,以及一個(gè)自動(dòng)化的admin接口。
4.Weppy
Weppy感覺就像Flask的簡(jiǎn)約風(fēng)格和Django的完整性之間的中間標(biāo)記。雖然開發(fā)Weppy應(yīng)用程序具有Flash的直接性,但Weppy具有Django中的許多功能,如數(shù)據(jù)層和身份驗(yàn)證。因此,Weppy適用于從極其簡(jiǎn)單到適度復(fù)雜的應(yīng)用程序。
5.Zope2
Zope不適用于簡(jiǎn)單的RESTful API(每Bottle或Flask),甚至不適用于具有交互性的基本網(wǎng)站(à la Django)。相反,它意味著是一個(gè)完整的企業(yè)級(jí)應(yīng)用程序服務(wù)器堆棧,類似于Java產(chǎn)品。該文檔將該框架描述為“對(duì)組件開發(fā)人員,整合者和Web設(shè)計(jì)人員最有用。”一個(gè)主要的第三方產(chǎn)品Plone CMS使用Zope作為其基礎(chǔ),并作為Zope持續(xù)開發(fā)的主要驅(qū)動(dòng)力。
6.Bottle
Bottle是一個(gè)簡(jiǎn)單高效的遵循WSGI的微型python Web框架。說微型,是因?yàn)樗挥幸粋€(gè)文件,除Python標(biāo)準(zhǔn)庫(kù)外,它不依賴于任何第三方模塊。
Bottle可以被認(rèn)為是一種迷你燒瓶,因?yàn)樗绕渌拔⒖蚣堋备泳o湊和簡(jiǎn)潔。由于其占地面積最小,Bottle非常適合包含在其他項(xiàng)目中或快速交付REST API等小型項(xiàng)目。
7.CherryPy
CherryPy是一種用于Python的、簡(jiǎn)單而非常有用的Web框架,其主要作用是以盡可能少的操作將Web服務(wù)器與Python代碼連接,其功能包括內(nèi)置的分析功能、靈活的插件系統(tǒng)以及一次運(yùn)行多個(gè)HTTP服務(wù)器的功能,可與運(yùn)行在最新版本的Python、Jython、Android上。
8.Falcon
如果正在構(gòu)建基于REST的API而不是其他任何東西,那么Falcon提供的絕對(duì)必要。它的設(shè)計(jì)精簡(jiǎn)而快速,幾乎沒有標(biāo)準(zhǔn)庫(kù)之外的依賴關(guān)系。
Falcon獲得“輕薄”標(biāo)簽的原因很大一部分與框架中的代碼行數(shù)無關(guān)。這是因?yàn)镕alcon在應(yīng)用程序上幾乎沒有任何結(jié)構(gòu)。
Falcon還采用了理智的開箱即用默認(rèn)設(shè)置,因此安裝時(shí)幾乎不需要修改。
Falcon對(duì)API的關(guān)注意味著用傳統(tǒng)的HTML用戶界面構(gòu)建Web應(yīng)用程序幾乎沒有。
Falcon的文檔與其他框架相比比較細(xì)長(zhǎng),但僅僅因?yàn)樗母采w范圍較小。用戶指南包括所有主要功能的正式逐步演練,以及一個(gè)快速入門部分,可讓您查看帶或不帶注釋的示例代碼。
9.Flask
Flask是一個(gè)輕量級(jí)的Web應(yīng)用框架, 使用Python編寫。基于 WerkzeugWSGI工具箱和Jinja2模板引擎,使用 BSD 授權(quán)。
Flask也被稱為 “microframework” ,因?yàn)樗褂煤?jiǎn)單的核心,用 extension 增加其他功能。Flask沒有默認(rèn)使用的數(shù)據(jù)庫(kù)、窗體驗(yàn)證工具。然而,F(xiàn)lask保留了擴(kuò)增的彈性,可以用Flask-extension加入這些功能:ORM、窗體驗(yàn)證工具、文件上傳、各種開放式身份驗(yàn)證技術(shù)。
Flask 很輕,花很少的成本就能夠開發(fā)一個(gè)簡(jiǎn)單的網(wǎng)站。非常適合初學(xué)者學(xué)習(xí)。Flask 框架學(xué)會(huì)以后,可以考慮學(xué)習(xí)插件的使用。例如使用 WTForm + Flask-WTForm 來驗(yàn)證表單數(shù)據(jù),用 SQLAlchemy + Flask-SQLAlchemy 來對(duì)你的數(shù)據(jù)庫(kù)進(jìn)行控制。
Flask是輕量級(jí)的,但是擴(kuò)展性非常良好(Github 上 37000 多個(gè) star 就知道群眾的選擇不無道理),可以讓我們?cè)陂_發(fā)的時(shí)候 定制專屬的功能。
10.Pyramid
Pyramid是一款非常通用的開源web框架。作為一個(gè)框架,它的首要任務(wù)是讓開發(fā)者創(chuàng)建web應(yīng)用變得簡(jiǎn)單。web應(yīng)用的類型并不重要,可以是一個(gè)電子表單、一個(gè)企業(yè)內(nèi)部網(wǎng)或者是一個(gè)社交平臺(tái)。Pyramid非常通用,可以在各種各樣的情況下使用它。
小而輕,Pyramid比Django更接近Flask甚至Falcon。因此,它非常適合于將現(xiàn)有Python代碼公開為REST API,或者為開發(fā)人員完成大部分繁重任務(wù)的Web項(xiàng)目提供核心的任務(wù)。
Pyramid支持Python 2和Python 3,但不使用Python 3的異步語(yǔ)法。
11.Tornado
Tornado是使用Python編寫的一個(gè)強(qiáng)大的、可擴(kuò)展的Web服務(wù)器。它在處理嚴(yán)峻的網(wǎng)絡(luò)流量時(shí)表現(xiàn)得足夠強(qiáng)健,但卻在創(chuàng)建和編寫時(shí)有著足夠的輕量級(jí),并能夠被用在大量的應(yīng)用和工具中。
Tornado的特點(diǎn):
作為Web框架,是一個(gè)輕量級(jí)的Web框架,類似于另一個(gè)Python web框架Web.py,其擁有異步非阻塞IO的處理方式。
作為Web服務(wù)器,Tornado有較為出色的抗負(fù)載能力,官方用nginx反向代理的方式部署Tornado和其它Python web應(yīng)用框架進(jìn)行對(duì)比,結(jié)果最大瀏覽量超過第二名近40%。
Tornado走的是少而精的方向,注重的是性能優(yōu)越,它最出名的是異步非阻塞的設(shè)計(jì)方式。
12.Wheezy.web
Wheezy.web是Web框架的Flask/Bottle/Pyramid模型:小巧輕便,專注于提供高速和高并發(fā)性。這個(gè)功能集的核心是小的,但它的創(chuàng)建者已經(jīng)為它配備了各種必備功能。
Wheezy的開發(fā)似乎已經(jīng)停滯不前,因?yàn)樵擁?xiàng)目的最后一次提交都記錄在2015年。這對(duì)于保持與新Python功能的兼容性并不是好兆頭。
總結(jié):
上述我們分析了12個(gè)框架。其中五個(gè):Django,CubicWeb,Web2py,Weppy和Zope2,采用“控件”方法,包含你可以想象的Web應(yīng)用程序所需的大多數(shù)功能。其余七個(gè)框架:Bottle,CherryPy,F(xiàn)alcon,F(xiàn)lask,Pyramid,Tornado,和Wheezy.web,提供更簡(jiǎn)約的外觀,交易批量和完整性,簡(jiǎn)單易用。
關(guān)于框架選擇的誤區(qū):
在框架的選擇問題上,許多人很容易就陷入了下面兩個(gè)誤區(qū)中而不自知:哪個(gè)框架最好?世上沒有最好的框架,只有最適合你自己、最適合你的團(tuán)隊(duì)的框架。編程語(yǔ)言選擇也是一個(gè)道理,你的團(tuán)隊(duì)Python最熟就用Python好了,如果最熟悉的是Ruby那就用Ruby好了,編程語(yǔ)言、框架都只是工具,能多、快、好、省的干完活就是好東西。
過分關(guān)注性能——其實(shí)大部分人是沒必要太關(guān)心框架的性能的,因?yàn)槟汩_發(fā)的網(wǎng)站根本就是個(gè)小站,能上1萬的IP的網(wǎng)站已經(jīng)不多了,上10萬的更是很少很少。在沒有一定的訪問量前談性能其實(shí)是沒有多大意義的,因?yàn)槟愕腃PU和內(nèi)存一直就閑著呢。
看完上述內(nèi)容,你們對(duì)目前最受歡迎的12個(gè)Python web框架分別是什么有進(jìn)一步的了解嗎?如果還想了解更多知識(shí)或者相關(guān)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。