Django,Flask ,FastAPI 怎麼選?

大家好,我是安果!

首先我們達成一個共識,框架是用來幫助我們提升效率,節省時間,避免處理那些低級細節的,如果能達到這個目標,就是一個合適的框架。選擇合適的框架,會事半功倍

Python 領域,開發 Web 應用程序的三個主流框架是 Django,Flask 和 FastAPI。它們都非常優秀,但有各自的特點

本文接下來闡述每個框架的優缺點,以幫助你在使用時做出最合適的選擇

Django

Django 是用於構建網站的免費開源 Web 開發框架。它於 2003 年創建,並使用 MTV 模式,也就是 Model-Template-View 模式,如果不使用 Django 的模版語法,也可以認爲是 MVC 模式,即 Model-View-Controler,對應三個文件:models.py, views.py, urls.py。

它以其健壯和簡單的特性而廣受歡迎,地位相當於 Java 領域的 Spring,並被 Instagram,Youtube 等技術巨頭使用,找工作面試,Django 也是重頭戲。Django 非常流行,極客時間已經有專門的付費教程。其次它的設計哲學與 Python 非常搭配,鼓勵代碼複用。

優點

Django 框架的代碼結構統一且清晰易懂,開發人員可以像做填空題一樣添加更多功能,也可以設計自定義的類或接口,即簡單也不失靈活性、擴展性。

Django 生態還有一個利器就是 Django Rest Framework(DRF),DRF 可以讓你輕鬆搭建具有 REST 風格的 API,由於它具有模塊化和可自定義的架構,在前後端分離的趨勢下,使用 Django 構建 Web API 也非常容易。

自帶安全性的中間件。Django 通過提供針對聯合 SQL 注入和跨站點請求僞造攻擊的防禦來提供安全性的訪問。

Django 生態非常豐富,第三方類適配的類庫也非常多,這意味着遇到問題時你並不孤單。

缺點

Django 可能會因爲許多可重用的模塊而限制了開發速度。它還需要確保以前的版本仍與新版本兼容,從而導致其運行稍慢。

Django Models 沒有 mixins,只有簡單的繼承。

Django 使用的 ORM 是在 SQLAlchemy 之前創建的,因此 Django ORM 的靈活性較差,因此它不如 SQLAlchemy。

Django 的用例

Django 可以處理任何規模和容量的項目。我們可以將其用於簡單站點或高性能站點。一些用例如下:

簡而言之,如果你要做一個上規模,不斷擴展的,大規模,商業化的 Web 項目,Django 是你最好的選擇。

Flask

Flask 是一個用 Python 編寫的微型 Web 框架,可用於開發簡約的 Web 應用程序。Flask 帶有諸如模板引擎,緩存和身份驗證之類的選項。

它的創建是爲了使用 Python 編程語言構建 Web 應用程序。它被設計爲易用,快速並且可以擴展成爲複雜的應用程序或微服務。

Flask 更像是創作者 Armin Ronacher 在 4 月 1 日對愚人節的惡作劇,在其中依賴了 Werkzeug 和 Jinja。令人驚訝的是,它受到了社區的讚賞,這使他們在此方面做得更多。

優點

與其他 Web 應用程序框架不同,flask 讓你可以完全控制 Web 開發,從而完全控制應用程序和 Web 開發。開發人員有機會 “坐在駕駛員席上”,掌管你想做的事情,例如添加外部功能。

Flask 允許進行單元測試,並且由於其內置的開發服務器,集成的支持等,因此可以通過對一些擴展進行調整來過渡到 Web 框架。

Flask 簡單易用,非常適合初學者使用,爲開發人員提供了更好地學習和理解它的空間。它還使開發人員可以毫不費力地快速創建應用程序。

缺點

Flask 的很多模塊由第三方開發,容易引起安全漏洞。

Flask 具有一個單一的來源,表示它將依次處理每個請求,因此,無論有多少個請求,它仍然會輪流處理它們,這會耗費更多時間。

如果開發人員水平不高,更容易使用低質量的代碼創建一個不良的 Web 應用程序。

用例

我們可以將 Flask 用於商業項目。它可以幫助你快速入門,但是網站高負荷情況下效果不佳。

你可以快速實施 Flask 項目,例如:

如果你要做一些小型個人項目,比如聊天機器人,或者想實現產品的快速原型,或者喜歡自由的編寫代碼控制程序的流程,那麼可以選擇 Flask,如果說 Django 是具備半自動駕駛的大型車,那麼 Flask 就是讓你自由操縱的手動擋小汽車。

FastAPI

FastAPI 是用於構建 Web API 的現代、開源、快速、高性能的 Web 框架,它基於 Python 3.6+ 標準類型提示,支持異步,正如它的名字,FastAPI 就是爲構建快速的 API 而生。

優點

自動類型檢查。這意味着更少的 Bug,即使在深度嵌套的 JSON 請求中,Fast API 也會驗證開發人員的數據類型。

集衆所長,站在巨人的肩膀上。FastAPI 建立在 JSON Schema(用於驗證 JSON 數據結構的工具),OAuth 2.0(用於授權的行業標準協議)和 OpenAPI(這是可公開獲得的應用程序編程接口)之類的標準之上。

現代化。FastAPI 使使用稱爲 graphene-python 的 Python 庫輕鬆構建 GraphQL API

快速、高性能。可以和 NodeJS 和 Go 相提並論

缺點

由於 FastAPI 相對較新,因此與其他框架相比,社區較小,第三方的教程相對較少。

用例

FastAPI 適用於構建高性能的 API,本身支持異步,如果要構建異步 API,可以優先選擇 FastAPI。Netflix 將其用於內部危機管理。它還可以在部署準備就緒的機器學習模型時完美縮放,因爲當 ML 模型封裝在 REST API 並部署在微服務中時,它在生產中會發揮最佳作用。

比較

我們從軟件包,社區,性能,靈活性,職位空缺和培訓來進行比較。

軟件包豐富程度。Django 具有使代碼可重用的大多數軟件包,是一個完整的 Web 開發框架,而 Flask 和 FastAPI 是用於構建網站的簡約框架,很多功能比如用戶系統,後臺管理要自己實現。

社區活躍程度。Django 社區是最活躍的社區,這是因爲它使用廣泛,很多大廠使用,另一方面,Flask 的社區也很繁榮,僅次於 Django。FastAPI 的社區目前還比較小,因爲它相對較新。

性能。在性能方面,FastAPI 是領跑者,因爲它是面向速度的,其次是 Flask,最後是 Django。

靈活性。靈活性是開發人員非常重視的東西,並且 Flask 比 Django 更靈活。另一方面,FastAPI 在代碼方面是靈活的,並且不限制代碼佈局。因此,我們可以說 Flask 在這三者中是最靈活的。

職位空缺。毫無疑問,Python 網絡生態系統中有 Django 要求的職位空缺更多,其次是 Flask,最後是 FastAPI,其數量要少得多,因此,如果你打算快速找到工作,那麼 Django 應該是你的首選。

學習成本。FastAPI < Flask < Django。Django 雖然學習起來比較費勁,但是有完善的官方文檔和很多在線資料和資源。Flask 既簡單又直接,也有豐富的在線資料和資源。而 FastAPI 學習起來更簡單直接,不過資源相對較少,因爲還需要時間。

最後的話

仔細比較之後,你也許可以選擇最適合你的那一個。總而言之,如果你想構建健壯的全棧式網站,那麼 Django 是完美的選擇,因爲它具有多種功能並且在生產中運行良好。

對於需要快速原型化 Web 應用程序並輕鬆快速地構建 API 的機器學習工程師或開發人員而言,Flask 是理想的選擇。

如果你正在尋找速度或可伸縮性,FastAPI 是完美的選擇。根據你要使用的框架來選擇框架始終是明智的選擇。

但是總的來說,它們都很好並且有很好的市場需求。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/kzpYE7G7XWWwThAzq5LtlQ