Flask 或 CherryPy:您應該使用哪種 Python 框架?

Flask 或 CherryPy:您應該使用哪種 Python 框架?

如果您是 Python 開發人員,您可以從一系列可用的框架中受益匪淺。雖然有些框架最適合大型生態系統,但其他框架則專門服務於特定的發展目標。繼續閱讀以了解兩個 Python 框架 Flask 和 CherryPy 之間的基本特性、用法和區別。

燒瓶的特點

Flask 是 Python 的一個微框架,可用於開發 Web 應用程序。這個免費的開源框架與 Windows、Mac 和 Linux 等頂級操作系統兼容。這個極簡框架基於 Werkzeug 和 Jinja 2,支持廣泛的可擴展性。

您還可以在開發複雜的應用程序時為其添加任何和所有必要的功能。這種架構通過聚合庫和模塊幫助您編寫有效的 Web 應用程序,同時保持項目的核心簡單和可擴展。

相關:值得開發者學習的 Web 框架

除了為您提供多種用於快速開發的工具和實用程序外,它還為您提供了選擇數據庫、模板引擎和服務器的選項。如果使用 Flask,則無需編寫線程管理和協議的代碼。這個值得信賴的框架支持同步請求處理和內置單元測試。

它提供了一些您可以輕鬆更改的模板和數據存儲約定。雖然它沒有內置的管理面板,但您可以使用 Flask-Admin 擴展。它與 SQLAlchemy、MongoEngine、Peewee 等後端兼容。

這種架構的核心特性很容易學習。您可以從數量眾多的在線資源中獲取幫助。

CherryPy 的特點

CherryPy 是另一個適用於構建任何面向對象的 Web 應用程序的 Pythonic 框架。這個可靠的開源框架支持所有流行的操作系統,如 Windows、Mac 和 Linux。CherryPy 架構提供了用於編碼、緩存、cookie、會話、靜態文件、授權、壓縮等的工具。

CherryPy 是一個可擴展的框架,可讓您輕鬆使用所有 Python 庫和工具。當應用程序需要處理更多用戶時,您可以擴展使用此架構製作的應用程序。您還可以利用其 HTTP 服務器來託管您的應用程序。

這種架構具有相對簡單的語法。因此,學習和實施 CherryPy 一點也不困難。這個模塊化框架的可重用組件有助於提高應用程序開發的速度和效率。它的獨立模塊通過使用數據抽象降低了複雜性。

Flask 和 CherryPy 的區別

現在,讓我們來看看這兩個 Python 框架之間的對比點。

1. 應用程序安全

Flask 或 CherryPy:您應該使用哪種 Python 框架?

在 Flask 中,您將獲得針對跨站點腳本和 JSON 安全性的強大預防措施。但是,您需要將內容安全策略 (CSP) 設置為響應標頭,以保護您的數據免受跨站點請求偽造 (CSRF) 的侵害。

CherryPy 框架核心附帶一個套件,可以有效地測試和調試您的應用程序。除此之外,它還具有內置功能,可幫助您處理代碼編碼、緩存、會話和用戶授權、會話和緩存等過程。

2. Web 開發模板

模板文件包含一組靜態數據,還允許合併更多的動態數據。由於模板引擎 Jinga 的支持,Flask 可以為您提供最終文檔的模板。

HTML 支持 Web 服務器網關接口 (WSGI) 應用程序,該應用程序可以接收從 Web 服務器轉發的請求。不幸的是,您不會從 CherryPy 獲得 HTML 模板系統。但它支持 WSGI,允許您將 Web 應用程序轉換為 WSGI 應用程序。

但是,很容易將流行的模板系統(如 Mako、Jinja2 或 Cheetah)集成到該框架中。

3. 外部庫

Flask 或 CherryPy:您應該使用哪種 Python 框架?

Flask 有許多外部庫和實用程序。您可以通過快速集成在項目的常見任務中實施它們。此外,Flask 擁有發達且豐富的社區,可確保在出現問題時及時有效地解決。

CherryPy 是一個高度可擴展且靈活的框架,它使與任何標準 Python 庫的集成變得簡單而輕鬆。但是,這種架構的一個相對較小的社區不提供任何有針對性的解決方案或工具。

由於這個極簡輕量級的框架只提供了幾個基本功能,因此缺乏解決方案往往會影響使用它的開發人員。

4. 支持的數據庫

儘管 Flask 不提供任何內置 ORM 框架,但您可以使用開源庫或擴展,如 Flask-SQLAlchemy 和 Flask-Pony。這種架構是開發 NoSQL 數據庫的理想選擇。它可以訪問支持 NoSQL 數據庫(如 MongoDB、CouchDB、Cassandra 和 DynamoDB)的開源庫或擴展。

同樣,您可以使用 CherryPy 來管理使用 Python 庫和擴展的關係數據庫。由於沒有內置的 ORM 框架,您可以自由選擇您喜歡的擴展。

5. 人氣

Flask 或 CherryPy:您應該使用哪種 Python 框架?

如果要比較這兩個 Python 框架之間的流行度,Flask 無疑是贏家。它在 GitHub 上聚集了 56.5K 顆星,目前有 627 名貢獻者。談到工作機會,許多組織在招聘 Python 開發人員時都將 Flask 作為一項要求。

儘管比 Flask 更老,但 CherryPy 在開發者社區中是不太受歡迎的選擇。它在 GitHub 上獲得了 140 顆星,目前在同一平台上有 113 位貢獻者。

何時使用 Flask 和 CherryPy

儘管 CherryPy 已經超過 18 歲,但相對的新手 Flask 在受歡迎程度方面遙遙領先。但是,這並不意味著您應該只選擇後者。找出何時應該使用這些框架中的任何一個。

1. Flask 的最佳使用範圍

Flask 或 CherryPy:您應該使用哪種 Python 框架?

您可以在許多場景中使用 Flask,例如:

  1. 如果您是一家初創公司並希望使用可根據您的成長進行擴展的可擴展框架
  2. 當需要構建簡單的 Web API 時
  3. 當您想要構建大型 Web 應用程序時
  4. 如果您需要明確的開發工作文檔
  5. 當您需要為任何項目構建原型時

2. CherryPy 的最佳使用範圍

Flask 或 CherryPy:您應該使用哪種 Python 框架?

您可以在以下情況下使用這個被低估的 Python 網絡工具 gem:

  1. 如果您正在尋找一個框架來使用內置工具創建 REST API
  2. 如果您想快速開發小型應用程序
  3. 當您的項目不需要大量資源和模板時
  4. 如果您是一位經驗豐富的 Web 開發人員,並且不需要任何連貫的框架文檔
  5. 當靈活性不是您的首要任務時

相關:如何在 Python 中構建 API:8 個流行的框架

使用最適合 Python 應用程序的框架

正確的 Python 框架使解決問題的過程變得無縫。既然您知道何時使用 Flask 和 CherryPy,您就可以把所有的困境都放在一邊。您還可以探索其他 Python 框架之間的差異。它可以幫助您明智地利用它們來盡最大努力滿足您的 Web 開發目標。


如何使用 Python 作為命令行計算器

如何使用 Python 作為命令行計算器

雖然您可以在計算機上使用圖形計算器,但 Python 編程語言解釋器可以兼作桌面計算器。它在 Python 社區中非常流行,以至於官方教程中都提到了它。下面介紹如何將 Python 用作計算器。

面向程序員的 8 個最佳 Java 博客

面向程序員的 8 個最佳 Java 博客

作為程序員,你應該接受挑戰才能生存,並在開發或編程領域創造一些奇蹟。因此,如果您正在尋求學習高級編程語言以提高您的職業技能,Java 是最好的前景之一。

初學者開始使用 Python 的 7 個重要命令

初學者開始使用 Python 的 7 個重要命令

如果您有一個全面的路線圖,詳細說明初學者應學習哪些概念以及如何進一步進步以達到下一個里程碑,那麼學習 Python 等新編程語言將變得輕而易舉。即使是中級程序員也應該經常複習他們的基礎知識,為自己打下堅實的基礎。

響應式網頁設計原則

響應式網頁設計原則

如今,構建一個根據瀏覽器或設備調整其用戶界面的網站或應用程序是一種常見的做法。有兩種方法可以實現這一目標。第一個涉及為不同的設備創建不同版本的網站或應用程序。但它效率低下,並可能導致不可預測的錯誤。

如何使用 C++、Python 和 JavaScript 計算數字中的位數

如何使用 C++、Python 和 JavaScript 計算數字中的位數

處理數字是編程的一個組成部分。每種編程語言都支持以多種不同方式操作數字。在本文中,您將學習如何使用迭代、基於日誌和基於字符串的方法查找整數中的總位數。

用於容器管理的 9 個最佳 Docker 替代方案

用於容器管理的 9 個最佳 Docker 替代方案

容器對於虛擬環境中的軟件開發、部署和管理非常有益。Docker 在容器化過程中很有用,但它不是唯一的平台。如果您正在尋找 Docker 的替代品,那就別無所求。此列表展示了一些功能豐富且高效的 Docker 替代方案,可用於您的下一個項目。

SQL 與 NoSQL:下一個項目的最佳數據庫是什麼?

SQL 與 NoSQL:下一個項目的最佳數據庫是什麼?

SQL 與 NoSQL:下一個項目的最佳數據庫是什麼?

如何在您的 WordPress 帖子中嵌入推文

如何在您的 WordPress 帖子中嵌入推文

在您的 WordPress 帖子中嵌入第三方服務是一種吸引訪問者興趣的令人興奮的方式。嵌入的內容還提供了使掃描更容易的視覺提示。WordPress 使添加此類內容變得容易。

如何使用 npkill 刪除節點模塊文件夾

如何使用 npkill 刪除節點模塊文件夾

Node.js 是一個 JavaScript 運行時環境,允許您在 Web 瀏覽器之外運行 JavaScript,使其成為開發各種應用程序的流行選擇。它的流行部分是由於大量的 NPM 包可以簡化開發人員的體驗。

如何編寫和編譯你的第一個 Solidity 代碼

如何編寫和編譯你的第一個 Solidity 代碼

Solidity 是以太坊區塊鏈上智能合約使用的編程語言。它是一種靜態類型的、面向對象的編程語言。

前 5 大徽章將增強您的 GitHub 存儲庫

前 5 大徽章將增強您的 GitHub 存儲庫

GitHub 徽章可以通過為用戶提供一種快速的方法來捕獲存儲庫指標來提高存儲庫的可讀性。徽章可以嵌入到您的 README.md 中,以向其他開發人員闡明您的項目的重要性和必要性。因此,讀者可以通過檢查附加的徽章快速了解存儲庫。

什麼是國際程序員節?今年的 3 種慶祝方式

什麼是國際程序員節?今年的 3 種慶祝方式

國際慶祝日是對社會事務、歷史日子和各自職業給予認可的好方法。國際程序員日慶祝程序員在改善日常生活方面所發揮的作用。我們生活的文明世界是程序員辛勤工作的產物。

Python String format() 方法如何工作?10個例子

Python String format() 方法如何工作?10個例子

無論是數據庫查詢還是數學運算的結果,Python 字符串格式方法都提供了一種更加動態和吸引人的方式來向用戶呈現結果。

Visual Studio 2022 與 2019:您現在應該升級嗎?解釋

Visual Studio 2022 與 2019:您現在應該升級嗎?解釋

今年早些時候,微軟向狂野的編程世界發布了 Visual Studio 2022 的預覽版。這是個好消息!這是一個非常受歡迎的 IDE,但考慮到它蓬勃發展的 DevOps 生態系統的變化速度,它需要進行調整甚至大修。

軟件度量的簡單介紹

軟件度量的簡單介紹

軟件度量是用於量化軟件各個方面的度量。這些方面可以包括開發團隊的成本、質量和效率。

如何在 Windows 10 上安裝 .NET Framework 3.5 版

如何在 Windows 10 上安裝 .NET Framework 3.5 版

作為 Windows 用戶,您可能至少遇到過 .NET Framework 這個詞。它是 Microsoft 開發的軟件框架,可讓您構建和運行 C#、C++、F# 和 Visual Basic 程序。最新的 .NET 版本是 4.8,但您的計算機可能需要舊版本的 .NET(如 .NET 3.5)才能運行某些應用程序。

如何使用 Python、C++ 和 JavaScript 查找 N 位完美立方體和正方形

如何使用 Python、C++ 和 JavaScript 查找 N 位完美立方體和正方形

許多程序員喜歡使用代碼解決棘手的數學問題。它有助於提高頭腦和提高解決問題的能力。在本文中,您將學習如何使用 Python、C++ 和 JavaScript 找到最小和最大的 n 位完美正方形和立方體。每個示例還包含幾個不同值的示例輸出。

如何將 Python 添加到 Windows PATH 變量

如何將 Python 添加到 Windows PATH 變量

從終端運行 Python 通常是不可避免的。但是,如果您是第一次在 Windows 10 上安裝 Python,則只有將其添加到 Windows PATH 環境變量中,才能通過 Windows 終端運行它。

如何使用 Python if 語句

如何使用 Python if 語句

if 語句是邏輯編程的驅動力。因此,更好地掌握 Python 是對 Python 編程技能的重要補充。

如何使用 Python 作為命令行計算器

如何使用 Python 作為命令行計算器

雖然您可以在計算機上使用圖形計算器,但 Python 編程語言解釋器可以兼作桌面計算器。它在 Python 社區中非常流行,以至於官方教程中都提到了它。下面介紹如何將 Python 用作計算器。

面向程序員的 8 個最佳 Java 博客

面向程序員的 8 個最佳 Java 博客

作為程序員,你應該接受挑戰才能生存,並在開發或編程領域創造一些奇蹟。因此,如果您正在尋求學習高級編程語言以提高您的職業技能,Java 是最好的前景之一。

初學者開始使用 Python 的 7 個重要命令

初學者開始使用 Python 的 7 個重要命令

如果您有一個全面的路線圖,詳細說明初學者應學習哪些概念以及如何進一步進步以達到下一個里程碑,那麼學習 Python 等新編程語言將變得輕而易舉。即使是中級程序員也應該經常複習他們的基礎知識,為自己打下堅實的基礎。

響應式網頁設計原則

響應式網頁設計原則

如今,構建一個根據瀏覽器或設備調整其用戶界面的網站或應用程序是一種常見的做法。有兩種方法可以實現這一目標。第一個涉及為不同的設備創建不同版本的網站或應用程序。但它效率低下,並可能導致不可預測的錯誤。

如何使用 C++、Python 和 JavaScript 計算數字中的位數

如何使用 C++、Python 和 JavaScript 計算數字中的位數

處理數字是編程的一個組成部分。每種編程語言都支持以多種不同方式操作數字。在本文中,您將學習如何使用迭代、基於日誌和基於字符串的方法查找整數中的總位數。

用於容器管理的 9 個最佳 Docker 替代方案

用於容器管理的 9 個最佳 Docker 替代方案

容器對於虛擬環境中的軟件開發、部署和管理非常有益。Docker 在容器化過程中很有用,但它不是唯一的平台。如果您正在尋找 Docker 的替代品,那就別無所求。此列表展示了一些功能豐富且高效的 Docker 替代方案,可用於您的下一個項目。

SQL 與 NoSQL:下一個項目的最佳數據庫是什麼?

SQL 與 NoSQL:下一個項目的最佳數據庫是什麼?

SQL 與 NoSQL:下一個項目的最佳數據庫是什麼?

如何在您的 WordPress 帖子中嵌入推文

如何在您的 WordPress 帖子中嵌入推文

在您的 WordPress 帖子中嵌入第三方服務是一種吸引訪問者興趣的令人興奮的方式。嵌入的內容還提供了使掃描更容易的視覺提示。WordPress 使添加此類內容變得容易。

如何使用 npkill 刪除節點模塊文件夾

如何使用 npkill 刪除節點模塊文件夾

Node.js 是一個 JavaScript 運行時環境,允許您在 Web 瀏覽器之外運行 JavaScript,使其成為開發各種應用程序的流行選擇。它的流行部分是由於大量的 NPM 包可以簡化開發人員的體驗。

如何編寫和編譯你的第一個 Solidity 代碼

如何編寫和編譯你的第一個 Solidity 代碼

Solidity 是以太坊區塊鏈上智能合約使用的編程語言。它是一種靜態類型的、面向對象的編程語言。