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