目前最受歡迎的12個Python web框架,你用過幾個?

博為峰網校發表於2018-12-17

Python作為膠水語言,隨AI時代來臨備受追捧。其發展方向有很多的,比如:爬蟲、資料分析、自動化測試、人工智慧、運維還有web開發等。

Python程式設計師有很多很好的選擇來建立Web應用程式和API;Django,Weppy,Bottle和Flask引領潮流。

如果正在開發一個Web應用程式並且已經選擇使用Python作為構建它的語言,那麼這是一個明智的選擇。Python的開發成熟度,強大的庫以及廣泛的實際應用使其成為Web開發的必需。

目前最受歡迎的12個Python web框架,你用過幾個?

其實,Python開發web在國內可能沒那麼盛行,但在國外卻發展迅猛。國內有些知名網站,像知乎、網易、豆瓣都是用Python開發的;國外有Quora(社交問答網站)、Google、Pinterest(圖片社交分享網站)。

所以,今天分享一下比較出名的12個Python web框架。

1.Django

Django是一個開源的Web應用框架,由Python寫成,支援許多資料庫引擎,可以讓Web開發變得迅速和可擴充套件,並會不斷的版本更新以匹配Python最新版本,如果是新手程式設計師,可以從這個框架入手。

目前最受歡迎的12個Python web框架,你用過幾個?

Django為人所稱道的地方主要有:

完美的文件,Django的成功,很大一部分原因要歸功於Django近乎完美的官方文件

2、全套的解決方案,Django提供全套的解決方案,基本要什麼有什麼,而且全部Django自己造,開發網站應手的工具Django基本都給你做好了,因此開發效率是不用說的,出了問題也算好找,不在你的程式碼裡就在Django的原始碼裡。

3、強大的URL路由配置,Django讓你可以設計出非常優雅的URL,在Django裡你基本可以跟醜陋的GET引數說拜拜。

4、自助管理後臺,admin interface是Django裡比較吸引眼球的一項contrib,讓你幾乎不用寫一行程式碼就擁有一個完整的後臺管理介面。

5、系統緊耦合,如果你覺得Django內建的某項功能不是很好,想用喜歡的第三方庫來代替是很難的,比如下面將要說的ORM、Template。要在Django裡用SQLAlchemy或Mako幾乎是不可能,即使打了一些補丁用上了也會讓你覺得非常非常彆扭。

6、Template功能比較弱,不能插入Python程式碼,要寫複雜一點的邏輯需要另外用Python實現Tag或Filter。

Django是走大而全的方向,注重的是高效開發,它最出名的是其全自動化的管理後臺:只需要使用起ORM,做簡單的物件定義,它就能自動生成資料庫結構、以及全功能的管理後臺。

2.CubicWeb

CubicWeb被稱為“一個支援重用和麵向物件設計的語義Web應用程式框架。”這是一個有趣的系統,強調使用抽象和可重用的程式碼塊稱為“多維資料集”,但對於某些開發人員來說可能過於抽象或特殊。

多維資料集是具有模式(資料模型),實體(程式設計邏輯)和檢視的軟體元件。透過組合多個立方體,每個立方體執行自己的任務,可以透過重用自己的程式碼和其他程式碼來編寫軟體應用程式。

3.Web2py

Web2py是一個用Python語言編寫的免費的開源Web框架,旨在敏捷快速的開發Web應用,具有快速、可擴充套件、安全以及可移植的資料庫驅動的應用,遵循LGPLv3開源協議。

Web2py提供一站式的解決方案,整個開發過程都可以在瀏覽器上進行,提供了Web版的線上開發,HTML模版編寫,靜態檔案的上傳,資料庫的編寫的功能。其它的還有日誌功能,以及一個自動化的admin介面。

目前最受歡迎的12個Python web框架,你用過幾個?

4.Weppy

Weppy感覺就像Flask的簡約風格和Django的完整性之間的中間標記。雖然開發Weppy應用程式具有Flash的直接性,但Weppy具有Django中的許多功能,如資料層和身份驗證。因此,Weppy適用於從極其簡單到適度複雜的應用程式。

5.Zope2

Zope不適用於簡單的RESTful API(每Bottle或Flask),甚至不適用於具有互動性的基本網站(à la Django)。相反,它意味著是一個完整的企業級應用程式伺服器堆疊,類似於Java產品。該文件將該框架描述為“對元件開發人員,整合者和Web設計人員最有用。”一個主要的第三方產品Plone CMS使用Zope作為其基礎,並作為Zope持續開發的主要驅動力。

6.Bottle

Bottle是一個簡單高效的遵循WSGI的微型python Web框架。說微型,是因為它只有一個檔案,除Python標準庫外,它不依賴於任何第三方模組。

Bottle可以被認為是一種迷你燒瓶,因為它比其他“微框架”更加緊湊和簡潔。由於其佔地面積最小,Bottle非常適合包含在其他專案中或快速交付REST API等小型專案。

7.CherryPy

CherryPy是一種用於Python的、簡單而非常有用的Web框架,其主要作用是以儘可能少的操作將Web伺服器與Python程式碼連線,其功能包括內建的分析功能、靈活的外掛系統以及一次執行多個HTTP伺服器的功能,可與執行在最新版本的Python、Jython、Android上。

8.Falcon

如果正在構建基於REST的API而不是其他任何東西,那麼Falcon提供的絕對必要。它的設計精簡而快速,幾乎沒有標準庫之外的依賴關係。

Falcon獲得“輕薄”標籤的原因很大一部分與框架中的程式碼行數無關。這是因為Falcon在應用程式上幾乎沒有任何結構。

Falcon還採用了理智的開箱即用預設設定,因此安裝時幾乎不需要修改。

Falcon對API的關注意味著用傳統的HTML使用者介面構建Web應用程式幾乎沒有。

Falcon的文件與其他框架相比比較細長,但僅僅因為它的覆蓋範圍較小。使用者指南包括所有主要功能的正式逐步演練,以及一個快速入門部分,可讓您檢視帶或不帶註釋的示例程式碼。

9.Flask

Flask是一個輕量級的Web應用框架, 使用Python編寫。基於 WerkzeugWSGI工具箱和Jinja2模板引擎,使用 BSD 授權。

Flask也被稱為 “microframework” ,因為它使用簡單的核心,用 extension 增加其他功能。Flask沒有預設使用的資料庫、窗體驗證工具。然而,Flask保留了擴增的彈性,可以用Flask-extension加入這些功能:ORM、窗體驗證工具、檔案上傳、各種開放式身份驗證技術。

Flask 很輕,花很少的成本就能夠開發一個簡單的網站。非常適合初學者學習。Flask 框架學會以後,可以考慮學習外掛的使用。例如使用 WTForm + Flask-WTForm 來驗證表單資料,用 SQLAlchemy + Flask-SQLAlchemy 來對你的資料庫進行控制。

Flask是輕量級的,但是擴充套件性非常良好(Github 上 37000 多個 star 就知道群眾的選擇不無道理),可以讓我們在開發的時候 定製專屬的功能。

10.Pyramid

Pyramid是一款非常通用的開源web框架。作為一個框架,它的首要任務是讓開發者建立web應用變得簡單。web應用的型別並不重要,可以是一個電子表單、一個企業內部網或者是一個社交平臺。Pyramid非常通用,可以在各種各樣的情況下使用它。

小而輕,Pyramid比Django更接近Flask甚至Falcon。因此,它非常適合於將現有Python程式碼公開為REST API,或者為開發人員完成大部分繁重任務的Web專案提供核心的任務。

Pyramid支援Python 2和Python 3,但不使用Python 3的非同步語法。

11.Tornado

Tornado是使用Python編寫的一個強大的、可擴充套件的Web伺服器。它在處理嚴峻的網路流量時表現得足夠強健,但卻在建立和編寫時有著足夠的輕量級,並能夠被用在大量的應用和工具中。

Tornado的特點:

作為Web框架,是一個輕量級的Web框架,類似於另一個Python web框架Web.py,其擁有非同步非阻塞IO的處理方式。

作為Web伺服器,Tornado有較為出色的抗負載能力,官方用nginx反向代理的方式部署Tornado和其它Python web應用框架進行對比,結果最大瀏覽量超過第二名近40%。

Tornado走的是少而精的方向,注重的是效能優越,它最出名的是非同步非阻塞的設計方式。

目前最受歡迎的12個Python web框架,你用過幾個?

12.Wheezy.web

Wheezy.web是Web框架的Flask/Bottle/Pyramid模型:小巧輕便,專注於提供高速和高併發性。這個功能集的核心是小的,但它的建立者已經為它配備了各種必備功能。

Wheezy的開發似乎已經停滯不前,因為該專案的最後一次提交都記錄在2015年。這對於保持與新Python功能的相容性並不是好兆頭。

總結:

上述我們分析了12個框架。其中五個:Django,CubicWeb,Web2py,Weppy和Zope2,採用“控制元件”方法,包含你可以想象的Web應用程式所需的大多數功能。其餘七個框架:Bottle,CherryPy,Falcon,Flask,Pyramid,Tornado,和Wheezy.web,提供更簡約的外觀,交易批次和完整性,簡單易用。

關於框架選擇的誤區:

在框架的選擇問題上,許多人很容易就陷入了下面兩個誤區中而不自知:哪個框架最好?世上沒有最好的框架,只有最適合你自己、最適合你的團隊的框架。程式語言選擇也是一個道理,你的團隊Python最熟就用Python好了,如果最熟悉的是Ruby那就用Ruby好了,程式語言、框架都只是工具,能多、快、好、省的幹完活就是好東西。

過分關注效能——其實大部分人是沒必要太關心框架的效能的,因為你開發的網站根本就是個小站,能上1萬的IP的網站已經不多了,上10萬的更是很少很少。在沒有一定的訪問量前談效能其實是沒有多大意義的,因為你的CPU和記憶體一直就閒著呢。

歡迎加入  51軟體測試大家庭,在這裡你將獲得【最新行業資訊】,【免費測試工具安裝包】,【軟體測試技術乾貨】,【面試求職技巧】... 51與你共同學習,一起成長!期待你的加入: QQ                     群:                    755431660


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31407649/viewspace-2285505/,如需轉載,請註明出處,否則將追究法律責任。

相關文章