目前最受歡迎的12個Python web框架,你用過幾個?
Python作為膠水語言,隨AI時代來臨備受追捧。其發展方向有很多的,比如:爬蟲、資料分析、自動化測試、人工智慧、運維還有web開發等。
Python程式設計師有很多很好的選擇來建立Web應用程式和API;Django,Weppy,Bottle和Flask引領潮流。
如果正在開發一個Web應用程式並且已經選擇使用Python作為構建它的語言,那麼這是一個明智的選擇。Python的開發成熟度,強大的庫以及廣泛的實際應用使其成為Web開發的必需。
其實,Python開發web在國內可能沒那麼盛行,但在國外卻發展迅猛。國內有些知名網站,像知乎、網易、豆瓣都是用Python開發的;國外有Quora(社交問答網站)、Google、Pinterest(圖片社交分享網站)。
所以,今天分享一下比較出名的12個Python web框架。
1.Django
Django是一個開源的Web應用框架,由Python寫成,支援許多資料庫引擎,可以讓Web開發變得迅速和可擴充套件,並會不斷的版本更新以匹配Python最新版本,如果是新手程式設計師,可以從這個框架入手。
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介面。
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.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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Vue最受歡迎的七大跨端框架,你都用過哪幾個?Vue跨端框架
- 15個最受歡迎的Python開源框架Python框架
- 14個最受歡迎的Python開源框架Python框架
- 【轉】15個最受歡迎的Python開源框架Python框架
- 轉載:15個最受歡迎的Python開源框架Python框架
- 最受歡迎的5個Android ORM框架AndroidORM框架
- 從GitHub中整理出來的15個最受歡迎的Python開源框架,你喜歡哪個GithubPython框架
- 12個在GitHub等開源網站中受歡迎的Python開源框架,你用過哪個Github網站Python框架
- 來說說目前受歡迎的10個Python開源框架Python框架
- 全球十大最受歡迎的度假目的地你去了幾個?
- ThinkPHP中文WEB框架歡迎你PHPWeb框架
- 8個最高效的Python爬蟲框架,你用過幾個?Python爬蟲框架
- 20個最受歡迎的Linux命令(轉)Linux
- 十佳最受歡迎的程式語言 你擅長几個?
- GitHub 十個最受歡迎的 React 相關庫GithubReact
- 2017年最受歡迎的UI框架UI框架
- Github上最受歡迎的Python輕量級框架Flask入門GithubPython框架Flask
- 推薦10個最受歡迎的 Vue.js UI 庫Vue.jsUI
- Steam:《我們之中》是目前最受歡迎的多人遊戲之一遊戲
- 常用的Python機器學習庫合集,你用過幾個?Python機器學習
- 12個超好用的IntelliJ IDEA 外掛!你用過幾個?IntelliJIdea
- Python機器學習常用庫,你用過哪幾個?Python機器學習
- François Chollet:ArXiv中最受歡迎的開源框架框架
- 8個Python爬蟲框架,你知道幾個?Python爬蟲框架
- 2019年10個最受歡迎的JavaScript動畫庫!JavaScript動畫
- 2016年度最受歡迎的100個 Java 庫Java
- 這9個鮮為人知的Python庫,你用過幾個?Python
- GitHub 的 12 個實用技巧,你 get 了幾個?Github
- 10款最受Python開發者歡迎的Python IDEPythonIDE
- 24個最受歡迎的jQuery畫廊和幻燈片外掛jQuery
- 最受歡迎PHP框架Laravel 5.5 新特性 提前體驗PHP框架Laravel
- 目前主流的內網穿透方式 你知道幾個內網穿透
- HackerRank 開發者調查報告:Python 最受歡迎Python
- eMarketer:微信是中國最受歡迎的移動應用
- HandsetDetection:資料顯示Galaxy S3仍是目前最受歡迎的裝置S3
- 2018 年最受歡迎的15個Python 庫,成都大資料分析培訓Python大資料
- 盤點10個最受歡迎IntelliJ IDEA主題,必有一款適合你!IntelliJIdea
- 最受DevOps歡迎的五種工具dev