<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Django,F(xiàn)lask ,F(xiàn)astAPI 怎么選?

          共 3590字,需瀏覽 8分鐘

           ·

          2021-05-10 14:45

          作者 | somenzz
          來源 | Python七號


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

          Python 領(lǐng)域,開發(fā) Web 應(yīng)用程序的三個主流框架是 Django,F(xiàn)lask 和 FastAPI。它們都非常優(yōu)秀,但有各自的特點。本文接下來闡述每個框架的優(yōu)缺點,以幫助你在使用時做出最合適的選擇。

          一、Django

          Django 是用于構(gòu)建網(wǎng)站的免費開源 Web 開發(fā)框架。它于 2003 年創(chuàng)建,并使用 MTV 模式,也就是 Model-Template-View 模式,如果不使用 Django 的模版語法,也可以認為是 MVC 模式,即 Model-View-Controler,對應(yīng)三個文件:models.py, views.py, urls.py。

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

          1.優(yōu)點

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

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

          自帶安全性的中間件。Django 通過提供針對聯(lián)合 SQL 注入和跨站點請求偽造攻擊的防御來提供安全性的訪問。

          Django 生態(tài)非常豐富,第三方類適配的類庫也非常多,這意味著遇到問題時你并不孤單。

          2.缺點

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

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

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

          3.Django 的用例

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

          • 高負荷預(yù)訂引擎。
          • 購物平臺。
          • 學(xué)校管理系統(tǒng)。
          • 內(nèi)置用于內(nèi)部數(shù)據(jù)的自定義 CRM 系統(tǒng)。
          • 支持基于 Web 的應(yīng)用程序的 IOS 和 Android 應(yīng)用程序。
          • 管理儀表板,基于照片的驗證,用于發(fā)送用戶通知的電子郵件系統(tǒng)等。

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

          二、Flask

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

          它的創(chuàng)建是為了使用 Python 編程語言構(gòu)建 Web 應(yīng)用程序。它被設(shè)計為易用,快速并且可以擴展成為復(fù)雜的應(yīng)用程序或微服務(wù)。

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

          1.優(yōu)點

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

          Flask 允許進行單元測試,并且由于其內(nèi)置的開發(fā)服務(wù)器,集成的支持等,因此可以通過對一些擴展進行調(diào)整來過渡到 Web 框架。

          Flask 簡單易用,非常適合初學(xué)者使用,為開發(fā)人員提供了更好地學(xué)習(xí)和理解它的空間。它還使開發(fā)人員可以毫不費力地快速創(chuàng)建應(yīng)用程序。

          2.缺點

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

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

          如果開發(fā)人員水平不高,更容易使用低質(zhì)量的代碼創(chuàng)建一個不良的 Web 應(yīng)用程序。

          3.用例

          我們可以將 Flask 用于商業(yè)項目。它可以幫助你快速入門,但是網(wǎng)站高負荷情況下效果不佳。

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

          • 電子商務(wù)系統(tǒng)。
          • Facebook / Twitter機器人。
          • 在線社交網(wǎng)絡(luò)。
          • 靜態(tài)網(wǎng)站。

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

          三、FastAPI

          FastAPI 是用于構(gòu)建 Web API 的現(xiàn)代、開源、快速、高性能的 Web 框架,它基于Python 3.6+ 標準類型提示,支持異步,正如它的名字,F(xiàn)astAPI 就是為構(gòu)建快速的 API 而生。

          1.優(yōu)點

          自動類型檢查。這意味著更少的 Bug,即使在深度嵌套的 JSON 請求中,F(xiàn)ast API 也會驗證開發(fā)人員的數(shù)據(jù)類型。

          集眾所長,站在巨人的肩膀上。FastAPI 建立在 JSON Schema(用于驗證JSON數(shù)據(jù)結(jié)構(gòu)的工具),OAuth 2.0(用于授權(quán)的行業(yè)標準協(xié)議)和OpenAPI(這是可公開獲得的應(yīng)用程序編程接口)之類的標準之上。

          現(xiàn)代化。FastAPI 使使用稱為 graphene-python 的 Python 庫輕松構(gòu)建 GraphQL API

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

          2.缺點

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

          3.用例

          FastAPI 適用于構(gòu)建高性能的 API,本身支持異步,如果要構(gòu)建異步 API,可以優(yōu)先選擇 FastAPI。Netflix 將其用于內(nèi)部危機管理。它還可以在部署準備就緒的機器學(xué)習(xí)模型時完美縮放,因為當 ML 模型封裝在 REST API 并部署在微服務(wù)中時,它在生產(chǎn)中會發(fā)揮最佳作用。

          四、比較

          我們從軟件包,社區(qū),性能,靈活性,職位空缺和培訓(xùn)來進行比較。

          軟件包豐富程度。Django 具有使代碼可重用的大多數(shù)軟件包,是一個完整的 Web 開發(fā)框架,而 Flask 和 FastAPI 是用于構(gòu)建網(wǎng)站的簡約框架,很多功能比如用戶系統(tǒng),后臺管理要自己實現(xiàn)。

          社區(qū)活躍程度。Django 社區(qū)是最活躍的社區(qū),這是因為它使用廣泛,很多大廠使用,另一方面,F(xiàn)lask 的社區(qū)也很繁榮,僅次于 Django。FastAPI 的社區(qū)目前還比較小,因為它相對較新。

          性能。在性能方面,F(xiàn)astAPI 是領(lǐng)跑者,因為它是面向速度的,其次是 Flask,最后是 Django。

          靈活性。靈活性是開發(fā)人員非常重視的東西,并且 Flask 比 Django 更靈活。另一方面,F(xiàn)astAPI 在代碼方面是靈活的,并且不限制代碼布局。因此,我們可以說 Flask 在這三者中是最靈活的。

          職位空缺。毫無疑問,Python 網(wǎng)絡(luò)生態(tài)系統(tǒng)中有 Django 要求的職位空缺更多,其次是 Flask,最后是 FastAPI,其數(shù)量要少得多,因此,如果你打算快速找到工作,那么 Django 應(yīng)該是你的首選。

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

          最后的話

          仔細比較之后,你也許可以選擇最適合你的那一個。總而言之,如果你想構(gòu)建健壯的全棧式網(wǎng)站,那么 Django 是完美的選擇,因為它具有多種功能并且在生產(chǎn)中運行良好。

          對于需要快速原型化 Web 應(yīng)用程序并輕松快速地構(gòu)建 API 的機器學(xué)習(xí)工程師或開發(fā)人員而言,F(xiàn)lask 是理想的選擇。

          如果你正在尋找速度或可伸縮性,F(xiàn)astAPI 是完美的選擇。根據(jù)你要使用的框架來選擇框架始終是明智的選擇。

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

          瀏覽 55
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  色五月婷婷在线 | 欧美www. | 黄色大片在线免费观看 | 亚洲av无码精品在线观看 | 亚洲精品999久久久无码 |