Q:Web 框架到底是什麼? A:Web 框架主要用於網站開發。開發者在基於 Web 框架實現自己的業務邏輯。 Web 框架實現了許多功能,為實作業務邏輯提供了一套通用方法。
Q:Web 框架有什麼作用? A:使用 Web 框架,很多的業務邏輯外的功能不需要自己再去完善,而是使用框架已有的功能就可以。 Web 架構讓進行 網站開發的時候,減少了工作量。
Q:我們為什麼要使用 Web 框架? A:Web 框架主要用於網站開發,可實現資料的互動和業務功能的完善。使用 Web 框架進行 網站開發的時候,在進行資料快取、資料庫存取、資料安全校驗等方面,不需要自己再重新實現,而是將業務邏輯相關的程式碼寫入框架就可以。
庫排序是按照使用人數和文檔的活躍度為參考進行的,建議大家使用排名靠前的框架,因為它們的文檔更齊全,技術累積更多,社區更繁盛,能得到更好的支持,這樣在遇到自己無法解決的問題,可以更快更有效率的找到解答的方案。
1. Django 框架
官網://m.sbmmt.com/ link/f1903f234d3ba4da38a18aa25751457d
優點:是高階Python Web 開發框架,特點是開發快速、程式碼較少、可擴充性強。 Django 採用 MTV(Model、Template、View)模型組織資源,框架功能豐富,模板擴充選擇最多。對於專業人員來說,Django 是當之無愧的 Python 排名第一的 Web 開發框架。
缺少 點:包含一些輕量應用不需要的功能模組,不如 Flask 輕巧。過度封裝很多類別和方法,直接使用比較簡單,但改動起來比較困難。相較於 C,C 效能,Djang 效能偏低。模板實現了程式碼和樣式完全分離,不允許模板裡出現 Python 程式碼,靈活度不夠。另外學習曲線也相對陡峭。
#2. Flask 框架
官網://m.sbmmt.com/link/d12f3b5c457a92abbc87939406df183f Flask 是一個Python Web 開發的微框架,嚴格來說,它僅提供Web 伺服器支持,不提供全端開發支援。然而,Flask 非常輕巧、非常簡單,基於它建造 Web 系統都以分鐘來計時,特別適合小微原型系統的開發。花少時間、產生可用系統,是非常划算的選擇。
缺少 點:對於大型網站開發,需要設計路由對應的規則,否則導致程式碼混亂。對新手來說,容易使用低品質的程式碼創建 “不良的 web 應用程式”。
3. Pyramid 框架
官網: //m.sbmmt.com/link/9ec0cfdc84044494e10582436e013e64
############################################# #########優點:是一個擴充功能很強且靈活的Python Web 開發框架。上手十分容易,比較適合中等規模且邊開發邊設計的場景。 Pyramid 不提供絕對嚴格的框架定義,根據需求可以擴展開發,對高階程式設計師十分友善。 ################## 缺少 點:國內知名度不高,高級用法需要透過閱讀原始碼來獲取靈感。預設使用 Chameleon 模板,靈活度沒有成為一個要素。 ##########
#4.web.py 框架
官網://m.sbmmt.com/link/8d4112ce0aabe7aeef422c136a222624
##優點:如其名,web.py 是一個採用Python 作為開發語言的Web 框架,簡單且強大。俄羅斯排名第一的 Yandex 搜尋引擎是基於這個框架開發,Guido van Rossum 認為這是最好的 Python Web 框架,還需要說別的嗎?有事實作證、有大牛認可,用起來吧!
缺少 點:Web.py 並未像其他框架一樣保持與 Python 3 相容性的最新狀態。這不僅意味著缺乏對非同步語法的支持,還意味著缺少對已棄用的函數的錯誤。此外,目前尚不清楚維護者是否有計劃在 Python 2 到達其支援生命週期結束後保持 Web.py 的最新狀態。
#5. Tornado 框架
官網://m.sbmmt.com/link/76330c26dea62332de2ca7b4a9ef51ec
##優點:Tornado 是一個基於非同步網路功能庫的Web 開發框架,因此,它能支援數萬個開放連接,Web 服務高效穩定。可見,Tornado 適合高併發場景下的 Web 系統,開發過程需要採用 Tornado 提供的框架,靈活性較差,確定場景後再考慮使用不遲。
#6. TurboGears 框架官網
://m.sbmmt.com/link/ce1d2a5e1884a6c502a675dbd0d3928e
##:TurboGears 最新優點版本試圖解決TurboGears 最初版本、Django、Rails 等框架缺陷,它支援多資料庫、JavaScript 工具集、多種資料交換格式等,當然,它開發非常高效,擴展性很強。試問它與 Django 哪個更好?還真不好說,Django 社群更為活躍或許更重要。
缺少 點:TurboGears 的一些缺點包括管理功能較為基礎,較少的第三方應用程式以及只有初級的文件。 TurboGears 的一個重大挑戰是它的壓倒性。因為它混搭的其他組件都提供無限的靈活性, 當試圖決定何種路徑來完成一個任務時它是過於複雜的。
####7. CherryPy 框架##################7. CherryPy 框架############官網###:#########//m.sbmmt.com/link/29056bc4790af32aa8458e3fbc737485###################優點:###CherryPy能夠讓開發者依照其他物件導向程式相似的設計方法開發Web 系統,進而採用最少的程式碼、最簡潔的方式。 CherryPy 已經開發了 10 年之久,穩定性較好,非常適合小規模 Web 系統和純粹的 Python 程式設計師。感受到了什麼? Python 大有一統江湖之勢!拭目以待。 ######
缺點:只包含為web 頁面提供服務所需的少量內容外,它應該盡可能地讓人感覺它不像“web 框架”,而是像任何其他類型的Python 應用程式一樣。 CherryPy 包含的位元用作低階構建塊。包括會話識別碼和 cookie 處理,但不包括 HTML 範本。像 Bottle 一樣,CherryPy 提供了一種將路由對應到磁碟上的目錄以供靜態檔案服務的方法。
#8. Falcon 框架
官網 ://m.sbmmt.com/link/ff8c1a3bd0c441439a0a081e560c85fc
#優點:Falcon 是支持大規模微服務API 或行動App 後端回應的Web 開發框架,它完全基於Python 並提供了非常高的效能、可靠性和可擴充性。 Falcon 定位獨特且特色鮮明,對於 App 開發者,後端系統建置不妨考慮 Falcon,十之八九是不會後悔的。
缺點:Falcon 缺點是其打包模組有點太少,有路由,中間件,鉤子,除此之外就不提供其他功能了(裸殼)。額外其他功能,例如驗證等都需要開發人員來開發擴充功能。因為其設計中就假設用於建構 REST API。
#9. Asgineer 框架
官網://m.sbmmt.com/link/e22c686bc771d5872150738b15f3e533
#一種編寫非同步Web 應用程式的工具,使用盡可能少的抽象,同時仍然提供友善的API。只需幾分鐘即可閱讀指南和參考資料!在 Uvicorn 上執行 Asgineer 時,它是可用的最快的 Web 框架之一。它支援 http 長輪詢、伺服器端事件 (SSE) 和 websockets。並且具有以正確(且快速)的方式為資產提供服務的實用程式。
缺少 點:中文文件匱乏。
10. Bottle 框架
官網:https ://m.sbmmt.com/link/7bd87e2f279ba0141a9795e201bf1a53
#優點:Bottle 是一個用於Python 的快速、簡單和##優點輕量級的WSGI 微型網路框架。它作為單一檔案模組分發,除了 Python 標準庫之外沒有任何依賴項。支援乾淨和動態的 URL。快速和 Pythonic 內建模板引擎,支援 mako、jinja2 和 cheetah 模板。方便地存取表單資料、檔案上傳、cookie、標題和其他與 HTTP 相關的元資料。
缺少 點:Bottle 極簡主義的一個後果是有些功能根本就不存在。不支援表單驗證,包括 CSRF 保護等功能。如果要建立支援高度使用者互動的 Web 應用程序,則需要自行新增它們。
11. Emmett 框架
官網://m.sbmmt.com/link/ffe10334251de1dc98339d99ae4743ba
#優點:#寫優雅的程式碼,專注於您的產品,你應該把更多的時間花在你的產品而不是底層框架上。 Emmett 是發明家的框架,因為它旨在簡化您的開發過程,其語法簡單、易於學習和理解。不要在路由器和不舒服的模式之間浪費時間:每次為應用程式寫下路由時,一切都清楚地呈現在您的眼前。
#缺少 點:中文文件匱乏。
12. apidaora 框架
官網://m.sbmmt.com/link/c37a21223db1cda645af1264df751f7f
#優點:##使用類型註釋將請求/ 回應聲明為資料類別和字典,使用jsondaora 驗證輸入數據,最快的python api 框架之一,可以在任何asgi 伺服器上運行。
缺少 點:中文文件匱乏。
13. Quixote 框架
官網://m.sbmmt.com/link/5f0453f78909173a7ce2eb874d2a7f52
#一個使用Python 編寫基於Web 的應用程式的框架。它的目標是按此順序實現靈活性和高效能。 Quixote 應用程式的結構往往類似於傳統應用程式。格式化網頁的邏輯由 Python 類別和函數組成。 Quixote 不強制分離表示邏輯和 “後端” 邏輯。相反,我們鼓勵您使用傳統技術。例如,一種解決方案是將表示邏輯放在自己的子包中。
缺少 點:雖然 Quixote 得到積極維護,但發布頻率較低。最近開發的重點是修復錯誤、提高標準合規性和增加 Quixote 的靈活性。
14. reahl 框架官網:
//m.sbmmt.com/link/4e0ccd2b894f717df5ebc12f4282ee70
#優點:reahl 是一個可以讓開發者完全用Python 語言編寫Web 應用的開放框架,採用Python 作為唯一開發語言是其最大特色。此外,reahl 提供了相當清晰且簡潔的開發組建,對於開發一般功能性 Web 系統足夠清晰且可行。 缺點:
提供抽象詞彙時,無法掌握一些更高級的使用者介面效果,目前不允許使用Sass 建構Bootstrap 的修改版本,並支援更高級的使用者介面模式。15. hug 框架
官網:
//m.sbmmt.com/link/e834cb114d33f729dbc9c7fb0c6bb607
#優點:Hug 是一個Python 3 API 開發框架。它的設計使軟體工程師可以一次開發 API,然後在需要時再使用它。 Hug 框架透過提供各種介面來簡化 API 開發。這就是為什麼該框架被稱為 Python 3 中最快的框架之一的主要原因。
缺點:它使用先前的WSGI 標準,這是一個同步框架,所以它不能處理像WebSockets 和其他非同步請求,不管怎麼說,它仍然有非常好的性能表現。 #
16. BlackSheep 框架 官網:https ://m.sbmmt.com/link/47bd8ac1becf213f155a82244b4a696a # 優點:BlackSheep 是一個非同步Web 框架,用於使用Python建立基於事件的Web 應用程式。它的靈感來自 Flask、ASP.NET Core 和 Yury Selivanov 的工作。 缺少 點:中文文件匱乏。 17. Index.py 框架 官網: //m.sbmmt.com/link/374939012129c174e451f0f64be3bfea #使用Radix Tree 進行路由查找。是最快的 Python web 框架之一。一切特性都服務於快速開發高效能的 Web 服務。大量正確的類型註釋,靈活且高效的路由系統,可視化 API 接口與在線調試,支援 Server-sent events 與 WebSocket,自帶一鍵部署命令 (基於 uvicorn 與 gunicorn),可使用任何可用的 ASGI 生態。 缺少 點:Index.py 不內建資料庫、快取等其他功能。選擇困難者請直接使用 Django。
#18. Sanic 框架 官網://m.sbmmt.com/link/3b036b877a6a074d7dbfc706fe868c1d #優點:Sanic 是一個Python 3.7 web 伺服器和web 框架,它的編寫速度很快。它允許使用 Python 3.5 中添加的 async/await 語法,這使您的程式碼無阻塞且快速。該專案的目標是提供一種簡單的方法來啟動和運行一個高效能的 HTTP 伺服器,該伺服器易於建置、擴展和最終擴展。 缺點:就功能方面Sanic 模仿Flask,例如透過共享Blueprints 的概念,微小的子應用程序,允許開發人員在更大的應用程式中拆分和組織其程式碼。對於光光是資料增刪改查 CRUD 應用,Sanic 也不是好的選擇。 19. Starlette 框架 官網://m.sbmmt.com/link/818cdcf067c824a4e34f9293de3b15a9 #優點:Starlette 是一個輕量級的ASGI 框架/ 工具包,非常適合建立效能非同步服務,它是生產就緒的,並為您提供以下內容:令人印象深刻的表現。 WwbSocket 支援。 GraphQL 支援。進程內後台任務。啟動和關閉事件。基於請求建置的測試客戶端。 CORS、GZip、靜態檔案、流響應。會話和 Cookie 支援。 100% 的測試覆蓋率。 100% 類型註解程式碼庫。零硬依賴。 缺少 點:Starlette 提供了所有基本的 Web 微框架功能。但是它不提供自動資料驗證,序列化或 API 文件。 # 20. Fastapi 框架 官網:https ://m.sbmmt.com/link/647a8664e3a3d945c87db2d07a6590c1 #優點:FastAPI 是一個現代、快速(高效能)的Web 框架,用於基於標準Python 類型提示使用Python 3.6 建立API。非常高的性能,與 NodeJS 和 Go 相當(感謝 Starlette 和 Pydantic)。可用的最快的 Python 框架之一。減少約 40% 的人為(開發人員)引發的錯誤。簡短,簡單,直觀,健壯。 缺少 點:本身不帶模板語法,需要安裝模板語法。 21. Responder 框架 官網://m.sbmmt.com/link/212ab20dbdf4191cbcdcf015511783f4 #優點:是kennethreitz 新開發的一個項目,是一個基於Python 的HTTP 服務框架。底層用了 Starlette 的框架,Starlette 是一款輕量級的 ASGI 框架 / 工具包, 可以用 Starlette 建立高效能的非同步 IO 服務。相對於 Starlette , responder 對開發者更友善一點。 kennethreitz 寫了 requests 號稱 "HTTP for Humans" 更清楚這一點。事實上比較下來,responder 也比 Starlette 優雅很多。 缺少 點:可能是新項目, 打包還不太完善。就目前版本而言,少許程式碼還不能正常運作。但介面形式已經定義完畢,期待後面版本會加上去。 22. Molten 框架 #官網:https:// m.sbmmt.com/link/b87039703fe79778e9f140b78621d7fb 優點:Molten 是一個最小的、可擴展的、快速的和高效的框架,用於使用Python 建構HTTP API。規劃自動驗證請求,程式碼更容易維護。實例可自動序列化,包含 API 在現實世界中通常要求的各種功能,廣泛使用 PEP484 類型提示和 mypy。 缺點:它沒有使用像第三方函式庫(如Pydantic)提供資料驗證,序列化和文檔,它有自己的庫。因此,這些資料類型定義將不太容易重複使用。依賴注入系統需要對依賴項進行預先註冊,並且將基於已聲明的類型解決依賴問題。因此,不可能聲明多個元件來提供一個特定的類型。 23. Clastic 框架 官網://m.sbmmt.com/link/9fa04f87c9138de23e92582b4ce549ec #優點:##一個功能強大的Python Web 框架,可簡化明確開發實踐,同時消除全域狀態。 Clastic 是完全用 Python 語言編寫的,增強可重用性和可測試性,主動 URL 路由檢查,更好地控制應用程式初始化,改進的中間件範例,沒有全域狀態,ORM 用法,更容易的 WSGI 整合。 # 缺點:Clastic 沒有建構全域狀態;URL 路由規則參數和視圖函數簽章不匹配,在Clastic 中,這種不匹配會在建置應用程式時引發異常。 24. Aiohttp 框架 官網:https ://m.sbmmt.com/link/6f8805c87ad80ed936bcd5ce4bebe65d 優點:用於asyncio 和Python 的非同步客戶端/伺服器.支援客戶端和 HTTP 伺服器,支援開箱即用的伺服器 WebSockets 和客戶端 WebSockets,沒有回調地獄。 Web 伺服器具有中介軟體、訊號和可插入路由。 缺點:根據RFC 7231 aiohttp 2.0 版本後做了接受HEAD 請求的調整,使用先前版本並且用add_ get () 新增的請求,如果使用HEAD 方法存取會回傳405。如果處理器會寫入很多響應體內容,你可以在執行 HEAD 方法時跳過處理響應體內容以提高執行效率。 25. Masonite 框架 ##官網://m.sbmmt.com/link/81baadacf39a11c56ee30acd5455fced #長為中心的Python Web 框架致力於實現實際的batteries,包括具有許多開箱即用功能的開發人員工具,具有極其可擴展的架構。 Masonite 非常適合初學者開發人員進入他們的第一個 Web 應用程序,以及需要充分利用 Masonite 的全部潛力來完成他們的應用程式的經驗豐富的開發人員。 Masonite 努力實現從安裝到部署的快速簡便,因此開發人員可以盡可能快速有效地從概念到創建。將其用於您的下一個 SaaS!嘗試一次,你就會墜入愛河。 對Masonite 來說,最大的」 競爭對手」 是Django, 因為社群正在竭盡全力將框架推向容易,令人愉悅的下一件大事。與 Django 相比,Masonite 仍然是嬰兒,期待它未來的表現。 官網: //m.sbmmt.com/link/f7426bc1998891cd172a10233b83a8de 缺少 點:
27. Tonberry 框架 官網: # 優點:一個符合ASGI 的Web 微框架,採用基於類別的路由方法。受 CherryPy 的影響但與 asyncio 相容。一個名為 Qactuar 的配套 ASGI 伺服器是從這個目前正在進行的專案產生的。 缺少 點:在使用拉取要求,請使用自動格式化程式 iSort 和 Black 並使用 MyPy 驗證程式碼。這是在不消除某些類型錯誤的情況下,並不總是可以使 MyPy 完全滿意,但是至少盡你所能並謹慎使用註釋 `# type: ignore`。最後,嘗試,盡可能提供最準確的類型提示。
28.cyclone 框架 官網://m.sbmmt.com/link/ed582716bfb4738ccd92405301122e66 #優點: #Cyclone 是Python 的Web 伺服器框架,它將Tornado API 實作為Twisted 協定。 Twisted 是一個事件驅動的 Python 網路程式設計框架。它是最成熟的非阻塞 I/O 庫之一,可供公眾使用。 Tornado 是 FriendFeed 網路伺服器的開源版本,它是最受歡迎和最快速的 Python 網路伺服器之一,具有用於建立網路應用程式的非常不錯的 API。除了豐富的功能集之外,Cyclone 還解決了 C10K 問題。 缺少 點:Cyclone 不再支援 python 2.x 。 29. Klein 框架 官網:https ://m.sbmmt.com/link/fd9e2ae32b53addc06c63208be3aaa43 優點:Klein 是一個微框架,用於使用Python 開發可用於生產的Web 服務。它是 “微” 的,因為它具有類似於 Bottle 和 Flask 的非常小的 API。它不是 “微”,因為它依賴標準庫之外的東西。這主要是因為它建立在廣泛使用和經過良好測試的組件上,如 Werkzeug 和 Twisted。 缺少 點:也許有點過時了。 30.nameko 框架 官網://m.sbmmt.com/link/5c341d10c5596a0fd920fda9f33bcb06 。和事件(發布- 訂閱),HTTPGET、POST 和websockets,CLI 實現簡單快速的開發,用於單元和整合測試的實用程式。 缺點:nameko 微服務出錯不會自動列印錯誤日誌,需要加上監控相關的依賴,計算密集型任務導致任務重試。 31. CubicWeb 框架 https ://m.sbmmt.com/link/ff84a9f3c0d335d25413dd8dfc9b2e8f # 優點:#CubicWeb 是一種語義Web 應用程式框架,在LGPL 下獲得許可,它使開發人員能夠透過重複使用元件(稱為立方體)並遵循眾所周知的物件導向設計原則來有效地建立Web 應用程式。滿足常見需求的可重複使用元件(資料模型和視圖)庫,Python 程式語言的強大功能和靈活性,用於儲存後端的 SQL 資料庫、LDAP 目錄、Subversion 和 Mercurial 的可靠性。 # 缺點:要在CubicWeb 應用程式中取得或操作持久性數據,可以使用關係查詢語言(RQL),RQL 提供了一種高度分離的路徑來相互關聯各種數據源。但是,隨著它的實現,透過手動建立查詢作為字串,它可能會讓習慣於 ORM 的開發人員感到過時。使用 CubicWeb 還有其他障礙。首先,設定可能很麻煩。另一個潛在的問題是缺少本機模板引擎;生成 HTML 留給開發人員。 CubicWeb 支援 Python 3,但 Twisted 等模組本身並未完全移植。 32. Zope2 框架 官網://m.sbmmt.com/link/6dcb94fb55921f2416219b454651bffc
Zope 2 是一款基於Python 的Web 應用框架,是所有Python Web 應用程式、工具的鼻祖,是Python 家族一個強大的分支。 Zope 2 的 「物件發布」 系統非常適合物件導向開發方法,並且可以減輕開發者的學習曲線,還可以幫助你發現應用程式裡一些不好的功能。 缺少 點: Zope 不適用於簡單的RESTful API(每Bottle 或Flask),甚至不適用於互動性的基本網站(à la Django),由於Zope 的尺寸和複雜性,安裝需要一些工作;這不是簡單地將來源解壓縮到專案子資料夾中的問題。 33. Web2py 框架官網: https ://m.sbmmt.com/link/60bb8062ea8e0c7ff17bb2e484cd223a Web2py 是一個用Python 語言編寫的免費的開源Web 框架,旨在敏捷快速的開發Web 應用,具有快速、可擴展、安全以及可移植的資料庫驅動的應用,遵循LGPLv3 開源協定。 Web2py 提供一站式的解決方案,整個開發過程都可以在瀏覽器上進行,提供了 Web 版的線上開發,HTML 模版編寫,靜態文件的上傳,資料庫的編寫的功能。其它的還有日誌功能,以及一個自動化的 admin 介面。 缺少 點: Web2py 的一個重要限制是它只與 Python 2.x 相容。首先,這意味著 Web2py 無法使用 Python 3 的非同步語法。如果你依賴 Python 3 獨有的外部函式庫,那麼你就不走運了。但是,正在進行使 Web2py Python 3 相容的工作,並且在撰寫本文時它已接近完成。
34. Pylons 框架官網: //m.sbmmt.com/link/ddc96fb7d590861ce4bbc4579f5fa848#優點: Pylons 是一個開放原始碼的Web 應用框架,使用python 語言編寫。它對 WSGI 標準進行了擴展應用,提升了重複使用性且將功能分割到獨立的模組中。 Pylons 是最新的 Web 應用框架中的典型,類似於 Django 和 TurboGears。 Pylons 受 Ruby on Rails 影響很深:它的兩個元件,Routes 和 WebHelpers 是 Rails 特性的 Python 實作。 缺少 點 ###35. Cubes 框架######### 官網://m.sbmmt.com/link/9fb2c3bda2393ae337242f405c93a010
#優點:Cubes 是一個輕量級的Python 框架和工具集,用於開發報告和分析應用程式、線上分析處理(OLAP)、多維分析和瀏覽聚合資料。它是 Data Brewery 的一部分。 缺點:不再為每個多維資料集提供隱式聚合 record_count。它必須明確定義為聚合:舊的後端架構是有限制的。它只允許使用一個商店,必須在伺服器啟動之前知道模型,不可能從遠端來源取得模型。 36. Dpark 框架 官網:https ://m.sbmmt.com/link/e7a561a2f218bf9cc0e697598320ec59 缺點:Dpark 使用的是進程,在Python 中,由於GIL (Global Interpreter Lock) 的存在,即使在多核心機器上使用多個線程,這些線程之間也沒有辦法真正實現並發執行。 37. Buildbot 框架 官網:
以上是37 Python Web 開發框架總結的詳細內容。更多資訊請關注PHP中文網其他相關文章!