Python web 框架

參考:Top 13 Python Web Frameworks to Learn in 2020 (steelkiwi.com)Top 15 Best Python REST API Frameworks (2021) | RapidAPI。

全??蚣?/h2>

Django

Official Website | GitHub | PyPI

Django 是一個免費的開源全棧 Python 框架。默認(rèn)情況下,它嘗試包含所有必需的功能,而不是將它們作為單獨的庫提供。Django 的一些示例性功能是其 authentication, URL routing, template engine, object-relational mapper (ORM), 和 database schema migrations(Django v.1.7 +)。

這些功能使 Django 具有高度的可擴展性,快速和極其靈活的功能。

Django 使用其 ORM 將對象映射到數(shù)據(jù)庫表。相同的代碼可用于不同的數(shù)據(jù)庫,并且不難從一個數(shù)據(jù)庫轉(zhuǎn)移到另一個數(shù)據(jù)庫。Django 使用的主要數(shù)據(jù)庫是 PostgreSQL, MySQL, SQLiteOracle,但是第三方驅(qū)動程序也允許您使用其他數(shù)據(jù)庫。

使用 Django,您可以制作從小型項目到復(fù)雜網(wǎng)站的任何Web應(yīng)用程序。憑借其靈活性,Django 也可用于制作MVP,從而使初創(chuàng)公司能夠優(yōu)化其時間和預(yù)算。

Django 的用戶群有望增長,因為許多開發(fā)人員認(rèn)為此框架是新興技術(shù)(如機器學(xué)習(xí))的最佳選擇。 另外,在2020 年,Django 社區(qū)計劃發(fā)布更多庫以滿足不斷增長的需求。

Pyramid

Official Website | GitHub | PyPI | Awesome

Pyramid 是一個基于 Python 的開放源代碼,也是第二個值得注意的 Web 應(yīng)用程序框架。它的目標(biāo)是以最小的復(fù)雜度來盡可能多地做。Pyramid 在 Python 3 上運行,緊跟技術(shù)進步。Pyramid 1.10 是框架的當(dāng)前版本,并且是自 2010 年以來的第十次更新。

Pyramid 的最顯著特征是它在大型和小型應(yīng)用程序中都能很好地工作。Pyramid 的一些出色功能包括:

使用 Pyramid,開發(fā)人員可以決定模板語言,生成庫和數(shù)據(jù)庫層。

金字塔社區(qū)很活躍,并且發(fā)布了許多版本。 開發(fā)人員可以通過加入IRC官方頻道或加入Google和Twitter組來關(guān)注框架的進展。

TurboGears

Official Website | GitHub | PyPI

TurboGears 是一個開源的,數(shù)據(jù)驅(qū)動的全棧Web應(yīng)用程序框架。它建立在許多中間件和許多庫的基礎(chǔ)上,最初旨在結(jié)合其他 Python 框架的最佳組件。

TurboGears 使您可以快速開發(fā)可擴展的數(shù)據(jù)驅(qū)動的Web應(yīng)用程序。它帶有一個用戶友好的模板引擎以及一個強大而靈活的ORM。除了使設(shè)計師的工作更輕松的出色模板系統(tǒng)外,TurboGears 還提供了很多靈活性,強大的聚合支持,強大的ORM和可重復(fù)使用的代碼段。

TurboGears的一些獨特功能包括:

至于TurboGears的未來,該社區(qū)目前正在努力改善框架的功能和整體穩(wěn)定性,并即將發(fā)布“最小代碼”。 該代碼也稱為微框架或TurboGears的精簡版本。 最少的代碼將幫助開發(fā)人員更快地構(gòu)建應(yīng)用程序,從而節(jié)省金錢和時間。

Web2py

Official Website | GitHub | PyPI

Web2py 是可擴展的開源全棧 Python 框架。在處理數(shù)據(jù)方面,它非常強大。Web2py 最初是作為教學(xué)工具提供的,重點是易用性。這解釋了為什么沒有項目級配置文件。

不過,Web2py 的優(yōu)點是它帶有自己的基于 Web 的 IDE,其中包括代碼編輯器,調(diào)試器和一鍵式部署。

Web2py 的其他重要功能包括:

  • No requirements for installation and configuration
  • Ability to run on Windows, Mac, Linux/Unix, Google App Engine, Amazon EC2, and any web hosting that supports either Python 2.5–2.7 or Java+Python
  • Readability of multiple protocols
  • Data security that prevents such vulnerabilities as cross-site scripting, injection flaws, and malicious file execution
  • Successful employment of software engineering practices, making code easy to read and maintain
  • Error tracking, thorough error logging and ticketing
  • Role-based access control
  • Support for internationalization
  • Backward compatibility that ensures user-oriented advancement without the need to lose ties with earlier versions

票務(wù)系統(tǒng)是Web2py的主要功能。每當(dāng)發(fā)生錯誤時,它都會發(fā)出票證。這樣,用戶可以跟蹤錯誤及其狀態(tài)。

盡管有所有這些優(yōu)點,但Web2py社區(qū)比Pyramid或Django的社區(qū)小。沒有多少開發(fā)人員正在使用它。這意味著獲得支持的機會更低。另外,官方郵件列表不是很活躍。

Microframeworks

微框架或簡約的Web應(yīng)用程序框架缺少完整框架的大多數(shù)功能,例如Web模板引擎,身份驗證功能,帳戶,授權(quán),輸入驗證和輸入環(huán)境衛(wèi)生。微框架試圖僅提供構(gòu)建應(yīng)用程序所需的組件集。它還可能專注于為一個特定領(lǐng)域提供必要的功能。

Flask

Official Website | GitHub | PyPI | Awesome

Flask 是 BSD 許可下可用的 Python 框架。它的靈感來自 Sinatra Ruby 框架。Flask 依賴于Werkzeug WSGI toolkitJinja2模板。

Flask的主要思想是幫助建立堅實的Web應(yīng)用程序基礎(chǔ)。從那里,您可以使用可能需要的任何擴展。Flask被選擇用于所有項目。實際上,對于任何與Django不匹配的網(wǎng)絡(luò)項目,這都是默認(rèn)選擇。

Flask的輕巧和模塊化設(shè)計使其可以輕松適應(yīng)開發(fā)人員的需求。它包括許多有用的即用型功能:

  • Built-in development server and a fast debugger
  • Integrated support for unit testing
  • RESTful request dispatching
  • Jinja2 templating
  • Secure cookies support (client-side sessions)
  • WSGI 1.0 compliance
  • Unicode-based
  • Ability to plug in any ORM
  • HTTP request handling

自 2010 年推出以來,F(xiàn)lask 已更新了27次。迄今為止,它仍然是增長最快的 Python 框架。但是,不再支持許多 Flask 擴展程序:文檔已過時,不再開發(fā)。如果遇到這種情況,則需要 Google 查找具有類似功能的受積極支持的插件。

Bottle

Official Website | GitHub | PyPI

Bottle是一個微框架。Bottle 最初是為了構(gòu)建 API 而設(shè)計的,它在單個源文件中實現(xiàn)了所有功能。除了 Python 標(biāo)準(zhǔn)庫外,它沒有依賴項。與任何完整堆??蚣苓M行編碼相比,使用 Bottle 進行編碼使您與金屬更接近。但是,只有在您制作的應(yīng)用程序非常小且最多有 500 行代碼且沒有特殊要求時,Bottle才是匹配項。

它的默認(rèn)功能包括路由,模板,實用程序以及基于 WSGI標(biāo)準(zhǔn)的基本抽象。

  • Routing – supports requests to function-call mapping, allowing you to achieve clean and dynamic URLs
  • Templates – a fast and Pythonic template engine out of the box along with full support for mako, jinja2, and cheetah
  • Utilities – comfortable access to form data, file uploads, cookies, headers, and other HTTP-related metadata
  • Server – a built-in HTTP development server that supports fapws3, bjoern, GAE, СherryPy, and any other WSGI-capable HTTP server

自2009年以來,Bottle已進行了73次更新,現(xiàn)在它是用于原型設(shè)計,學(xué)習(xí)網(wǎng)絡(luò)框架的組織以及構(gòu)建簡單的個人應(yīng)用程序的完美解決方案。

對Bottle社區(qū)的任何貢獻都可以通過GitHub接受。用戶還可以加入Bottle郵件列表和博客,并關(guān)注Twitter上的最新更改。如果您正在尋找其他論壇進行討論,請加入freenode聊天。

CherryPy

Official Website | GitHub | PyPI

CherryPy 是一個開放源代碼的簡約Web框架。它使構(gòu)建Python Web應(yīng)用程序與構(gòu)建任何其他面向?qū)ο蟮某绦驔]有什么不同。

CherryPy 被創(chuàng)建為可擴展的。該框架甚至提供了用于掛鉤點和擴展的機制。例如,基于 CherryPy 的Web應(yīng)用程序是一個獨立的 Python 應(yīng)用程序,它嵌入了自己的多線程 Web 服務(wù)器。借助自己的Web服務(wù)器,擴展點包括請求-響應(yīng)周期之外的功能,從而增加了 CherryPy 的可擴展性。

實際上,基于 CherryPy 的 Web 應(yīng)用程序是一個獨立的 Python 應(yīng)用程序,它嵌入了自己的多線程 Web 服務(wù)器。CherryPy 應(yīng)用程序可在支持 Python 的任何操作系統(tǒng)(Windows,macOS,Linux等)上運行。它們可以部署在可以運行普通 Python 應(yīng)用程序的任何位置。CherryPy 應(yīng)用程序不需要 Apache,但是您可以在 Apache 后面運行 CherryPy 應(yīng)用程序,就像在Lighttpd 或者 IIS后面運行它一樣。

CherryPy 并不是一個非常有限的框架,因為它允許您使用任何類型的技術(shù)進行模板,數(shù)據(jù)訪問等。但是,它仍然可以處理會話,靜態(tài)數(shù)據(jù),Cookie,文件上傳以及網(wǎng)絡(luò)框架通??梢詧?zhí)行的所有其他操作。

CherryPy的一些默認(rèn)功能包括:

盡管具有所有功能和優(yōu)點,但許多開發(fā)人員認(rèn)為 CherryPy 的文檔可以使用一些改進。另外,CherryPy 可能至少更易于使用。

像大多數(shù)其他框架一樣,CherryPy 背后有一個社區(qū),可為初學(xué)者和高級開發(fā)人員提供幫助。CherryPy 有一個郵件列表,建議開發(fā)人員加入框架的IRC頻道或Gitter和Google小組。

Falcon

Official Website | GitHub | PyPI

Falcon是一個 bare-metal Python Web API框架,用于構(gòu)建非??焖俚膽?yīng)用程序后端。該框架的徽標(biāo)是獵鷹,象征著獵鷹的工作速度。

該框架使開發(fā)人員可以設(shè)計更清潔的設(shè)計并處理大多數(shù)請求。 Falcon從不限制開發(fā)人員選擇用于數(shù)據(jù)庫和授權(quán)的庫。

Falcon其他有價值的功能:

  • 100% code coverage with a comprehensive test suite

  • A highly optimized code base

  • Upfront exception handling

  • REST-inspired resource classes

  • URI templates for intuitive routines

  • Easy access via request and response classes

  • DRY request processing via middleware components

  • Idiomatic HTTP error responses

  • Unit testing via WSGI helpers

Falcon在開發(fā)Web框架時會忽略無用的操作。此外,它還提供了選擇的自由:開發(fā)人員可以制定有助于他們自由調(diào)整和自定義實現(xiàn)的決策。

值得一提的另外兩個優(yōu)點是,可以使用大量的文檔,還可以創(chuàng)建一個活躍的社區(qū)。

Hug

Official Website | GitHub | PyPI

Hug是一個Python 3 API開發(fā)框架。它的設(shè)計使軟件工程師可以先開發(fā)一個 API,然后在需要時再使用它。
Hug 框架通過提供各種接口來簡化 API 開發(fā)。這就是為什么該框架被稱為 Python 3 中最快的框架的主要原因。

Hug 的主要特點:

  • Support for automatic documentation

  • Annotation-powered validation

  • Built-in version management

  • Compliance with Cython

  • Can be used as a Python library

Hug框架包含盡可能少的集成和盡可能少的代碼,保持功能正常并提供出色的性能。另外,Hug的社區(qū)正在不斷壯大。這表明了該框架的需求,并證明了每當(dāng)出現(xiàn)問題時,開發(fā)人員都可以找到幫助。

FastAPI

Official Website |GitHub |PyPI

FastAPI 是一個基于 Python 的現(xiàn)代框架。它最初被設(shè)計為易于使用,以確保最佳的開發(fā)體驗。迄今為止, FastAPI 是使用 Python 3.6+ 構(gòu)建 API 最快的框架之一。

該框架具有 Flask 的幾個特征,包括其簡單性。整個框架基于Starlette構(gòu)建,并包含其大部分功能(模板,WebSocket和GraphQL支持)。

FastAPI 框架提供:

  • Increase in development speed by 200% to 300%
  • Reduced errors by 40%
  • Less time debugging
  • Minimization of code duplication
  • Automatic interactive documentation

FastAPI并沒有與任何數(shù)據(jù)庫緊密耦合。但是,它支持您需要的數(shù)據(jù)庫。使用FastAPI,您可以自由地按需要構(gòu)建項目,甚至可以使用Flask項目之一中的大多數(shù)相同文件。

唯一的缺點是社區(qū)很小。但這是因為 FastAPI 是一個相對較新的框架。

異步框架

異步框架是一種相對較新的 Python 框架。這是一個微框架,使開發(fā)人員能夠處理大量并發(fā)連接。異步框架使用非阻塞套接字,并以 Python 的 asyncio 庫作為輸入。

Sanic

Official Website | GitHub | PyPI

Sanic 是一個基于 uvloop 的 Python Web 框架,專門針對通過異步請求處理的快速 HTTP 響應(yīng)而創(chuàng)建。

它可以在 Python 3.5+ 上運行。Sanic 支持異步請求處理程序,從而使其與 Python 3.5 的 async / await 函數(shù)兼容。這提高了速度,提供了非阻塞功能。

由于 Sonic 具有路由,中間件,cookie,版本控制,靜態(tài)文件,藍(lán)圖,基于類的視圖和套接字,因此在 Python 世界中被認(rèn)為是首選的異步框架。但是,它不提供數(shù)據(jù)庫支持和模板。

在具有一個進程和 100 個連接的基準(zhǔn)測試中,Sanic 每秒能夠處理33,342個請求,平均延遲為2.96毫秒。

Tornado

Official Website | GitHub | PyPI

Tornado 是一個 Python Web 框架和異步網(wǎng)絡(luò)庫,專注于速度和處理大量流量的能力。它使用無阻塞網(wǎng)絡(luò)I / O并解決了C10k問題(這意味著,如果配置正確,它可以處理10,000多個并發(fā)連接)。

這使其成為構(gòu)建需要高性能和成千上萬并發(fā)用戶的應(yīng)用程序的絕佳工具。

Tornado 的主要特點是:

就受歡迎程度而言,龍卷風(fēng)介于 Django 和 Flask 之間。假設(shè)由于它們的功能和工具,您想要用Flask或 Django 寫東西,但是您還需要更好的性能。在這種情況下,您應(yīng)該選擇“Tornado”。

其他

Dash

Official Website | GitHub | PyPI | Awesome

Dash是用于構(gòu)建分析 Web 應(yīng)用程序的開源 Python 框架。對于對網(wǎng)絡(luò)開發(fā)不太熟悉的 Python 數(shù)據(jù)科學(xué)家來說,這尤其有用。

Dash有兩個基本優(yōu)點:

  • It allows you to build highly interactive applications using only Python code.
  • It makes it simple to use the power of Python tools for manipulating data.

Dash 應(yīng)用程序是運行 Flask 并通過 HTTP 請求與 JSON 數(shù)據(jù)包通信的Web服務(wù)器。他們的前端使用 React.js 渲染組件。

使用Dash開發(fā)的應(yīng)用程序?qū)⒃赪eb瀏覽器中呈現(xiàn),并且可以部署到服務(wù)器。這也意味著Dash應(yīng)用程序本質(zhì)上是跨平臺且可移動的。

Dash 開發(fā)人員可以訪問基礎(chǔ)的Flask實例及其所有可配置屬性。為了擴展 Dash 應(yīng)用程序的功能,開發(fā)人員還可以使用豐富的 Flask Plugins

Eve

Category: Micro Framework

Eve 是在 Flask 之上構(gòu)建的 API 微框架。

Eve 的目標(biāo)是使 REST API 開發(fā)極其快速和簡單。因此,它建立在 Flask 原理的基礎(chǔ)上,不包括 Flask 的所有 Web 應(yīng)用程序組件。

Eve 支持最常用的 REST API 接口模式,例如 CRUD 操作,可自定義的 API 端點,過濾,排序,分頁,JSON / XML / JSONP格式。

它還支持高級功能,例如身份驗證,CORS,緩存,速率限制等。Eve還支持與 MongoDB 和 SQL 數(shù)據(jù)庫集成。

Eve 提供了一個 Python 配置設(shè)置文件來定義 API 資源和端點。這樣,可以使用聲明性 JSON 語法構(gòu)建 REST API。

有關(guān)更多詳細(xì)信息,請參閱 Eve quickstart guide,或瀏覽 GitHub repository。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容