Python Web 開發哪家強?

2021-02-19 菜鳥學Python

作者 | SeattleDataGuy

譯者 | Lemonbi

譯文出品 | Python數據之道

Flask vs Django,Python Web 開發用哪個框架更好?

Photo by Jefferson Santos on Unsplash

您是否正在考慮使用 Python 開發網站?然後你可能聽說過 Django 和 Flask。這兩個是 Python 最流行的 Web 框架(當然還有更多)。現在的問題是你使用哪一個更合適?

本文旨在簡要介紹兩種框架的工作原理,它們的相同點和不同點,以及在選擇框架時應考慮的一些要點。

一、簡要概覽

基於 Python 的主要應用程式是使用命令行界面創建的,可以在命令提示符或 shell 腳本上運行。當然,人們希望使用 Python 做更多事情,而不僅僅是自動執行任務和管理工作流程。因此,Web 框架順勢而生。

Django

Django 是一個 Python Web 框架,適合具有開發時間限制要求的完美主義者。Django 提供功能齊全的模型 - 視圖 - 控制器框架。它的開發基於「內置電池的方法」(譯者註:Django 自帶全套工具,可以開箱即用),使開發人員無需第三方庫和工具即可創建網站。隨著 2005 年 7 月 15 日的第一次發布, Django 由 Django 軟體基金會(DSF)開發和管理。它是免費且開源的,已經發布了許多個版本。

Flask

Flask是一個輕量級的 Python 框架(微框架),它基於一次完成一件事並做得很好。隨著 2010 年 4 月 1 日的首次發布,Flask 由奧地利開發商 Armin Ronacher 開發。正如其文檔中所描述的那樣,微觀框架意味著 Flask 旨在保持其輕量級的簡單性和可擴展的使用。Flask 的真正力量在於它具有靈活性。

二、 Flask 與 Django 兩者之間的對比

下面是 Django 和 Flask 的深入比較,從如下幾方面來對比:

受歡迎度:使用率和案例

入門文檔和導航的易用程度

模板引擎和系統

路由系統

用戶靈活性

管理系統的可用性

開發速度

受歡迎度:使用率和案例

幾個頂級網站使用 Django 和 Flask。來自 GitHub 和其他網站的統計數據表明,Django 比 Flask 更受歡迎。這種受歡迎程度僅限於開發人員使用 Django 強大的功能來快速構建和部署複雜的 Web 應用程式。同樣,開發人員使用 Flask 來加速使用固定內容的網站的開發。由 Django(Bitbucket,Eventbrite,Instagram,Pinterest等)和 Flask(LinkedIn,Netflix,Twilio,Uber)提供支持的一些知名項目積極使用這些框架。

用戶靈活性

兩個框架之間最大的區別之一是靈活性。

Django 的 內置電池 概念有助於開發人員在沒有第三方庫和工具的情況下創建各種 Web 應用程式。但是,Django 缺乏對提供的模塊進行更改的選項。因此,開發人員使用內置功能創建 Web 應用程式。這意味著如果開發人員想要為 Django 已經提供的功能使用不同的庫,那就不容易了。

相反,Flask 使用其可擴展的 Web 框架,使用各種 Web 開發庫和工具實現 Web 應用程式的靈活開發。這使得更有經驗的開發人員可以自由地使用他們熟悉的庫和資料庫進行即插即用。

你不會被框架強迫你使用的東西所困擾。相反,您可以轉向您熟悉的技術組件。

開發文檔和導航的易用程度

Flask 提供了大量文檔,其中包括部署,安裝,快速入門說明和詳細教程。使用 Python的 pip 安裝 Flask 很容易。

pip install flask

上面的 pip 命令安裝 Flask 及其基本軟體包。在 Flask 上運行代碼非常簡單(例如,顯示 「Hi Welcome」)。它需要的只是創建 Flask 類的實例,然後是顯示 「Hi Welcome」 字符串的路由。

from flask import Flask

app = Flask(__name__)@app.route("/")

def hi_welcome():

return "Hi Welcome"

if __name__ == "__main__":

app.run()

Django 的文檔比 Flask 更廣泛,由於它的複雜性,這是預料之中的。Djang 也可以使用 pip 快速安裝。

pip install Django

在 Django 中運行代碼涉及使用內置命令來創建項目,以及另一個用於創建應用程式的命令。它的啟動命令很方便,因為它使用了一個現成的目錄結構。但是這個視頻解釋得最好:

路由系統

任何 Web 應用程式或網站都必不可少的是路由系統(routing system),它可以創建 URL 並確定加載 URL 時顯示的內容。

Flask採用簡單、輕量級的Web框架,路由由 route() 裝飾器完成。使用上面的 「Hello World」 示例,第一行是裝飾器。裝飾器是將可調用(類)作為參數的函數,然後在返回之前進行修改。使用的字符串還告訴 Flask 什麼 URL 觸發其功能。例如,使用 /(http://127.0.0.1:5000 / \),它會在使用瀏覽器訪問 Flask 時加載第一頁。

對於 Django ,它採用了內置電池的方法,這使開發人員更容易完成基本的 Web 開發任務,如資料庫模式遷移,URL 路由和用戶身份驗證。自定義 Web 應用程式還體驗 Django 中的進程加速,因為它提供了引導工具,內置模板引擎和 ORM 系統。使用 urls.py 文件處理路由,該文件是在運行內置的 djangoadmin startproject 命令時創建的。要定義路由,需要從 Django 導入 URL 方法並創建實例,指定每個參數(關鍵字參數,現有 URL 模塊和正則表達式字符串)。管理站點的內置 Django URL 默認位於 urls.py 文件中。它告訴 Django 你在哪裡加載來自指定模塊的 URL 。

管理系統的可用性

Django 使用遵循對象關係映射器(ORM)目錄結構和資料庫系統的管理系統。當使用 Django 進行開發時,它增加了一致性體驗,因為多個項目具有相同的目錄結構。

Flask 缺少這些功能,可能需要您安裝自定義模塊才能將 ORM 用作開發人員的可選項。這些選項包括 MongoDB,SQLAlchemy,SQLite 等的使用。如您所見,這是靈活性和易用性之間的權衡。Django 附帶了構建網站所需的大部分技術組件。Flask 更純粹只是框架,允許最終用戶做出更多決定。

開發速度

眾所周知,Django 框架可以為複雜的 Web 應用程式提供快速的開發速度。由於它提供了完整的功能,因此它提供了所有必要的實施工具。

Flask 的簡單性允許經驗豐富的開發人員在短時間內完成較小的應用程式。Django 框架的一個顯著優勢是提供了一個活躍的社區,旨在幫助您擴展應用程式的解決方案或使用有用的內容使您的工作更輕鬆。Flask 社區目前沒那麼大,因此找到有用的信息並不容易。

模板引擎和系統

所有 Web 應用程式都有一個支持用戶交互的前端(用戶界面)。由於 Web 應用程式不是靜態的,因此它們採用不同的方法動態生成 HTML。Django 和 Flask 提供令人興奮的模板引擎。

Flask 是使用 Jinja2 模板引擎開發的。它是一個現代且設計友好的模板,允許開發人員在集成的沙盒環境的幫助下模擬動態 Web 應用程式。Jinja2 模板包含變量和標籤。Flask 模板的另一個關鍵特性是模板繼承。以下是一些常用的 Jinja2 語法示例:

comments: {# … #}

variables: {{ … }}

statements: {% … %} (Similar to normal programming, Jinja2

statements find usage in a variety of cases, like if-else

statements, imports, loops, and macros).

Django 使用內置的模板引擎,允許開發人員毫不費力地定義 Web 應用程式的面向用戶的層。此外,開發人員可以使用 Django 模板語言(DTL)編寫模板來創建自定義用戶界面開發。Django 中的模板語法包括:

single-line comments: {# … #}

multi-line comments: {% comment %} … {% endcomment %}

filters on variables: {{ variable|filter }}

tags: {% … %}

variables: {{ … }}

jinja2 模板從 Django 模板語言中獲取靈感,因此語法相似。Django 模板具有模板繼承功能,更多信息可以在 Django 模板官方文檔中看到。

總結

要開始使用 Flask 和 Django 框架,必須更深入地了解基礎知識。每個框架所附帶的差異和好處在於您希望實施哪種項目。主要對比包括:

Flask 提供靈活性,簡單性和細粒度控制。Flask 毫無疑問,讓您決定如何實現應用程式。

Django 為您的 Web 應用程式開發提供管理面板,資料庫接口,目錄結構和 ORM 的全面體驗。

我們希望這有助於您對所選框架做出明確決定。

祝你未來的項目順利!

來源:https://medium.com/better-programming/python-backends-flask-versus-django-5de314fa70ff

近期熱門:

用Python給女友 準備個絕對甜蜜的七夕禮物

5天破10億的哪吒,為啥這麼火,Python來分析

零基礎學了8個月的Python,到底有啥感悟

學習群:

小密圈人氣很高的兩個實戰項目

小密圈的趣味實戰-微信主題

3個月還沒入門Python,看這100名小密圈的同學3周學Python的傑作

相關焦點

  • 2020年web開發需要的python框架:Django
    Django集成框架是python開發,採用了MTV的框架模式,即模型M,視圖V和模版T。最初2005年發展在CMS(內容管理系統)軟體方面,之後開始全面走向成熟的web框架。開發動態網站的一個主要原因是對用戶進行身份驗證並限制內容,Django提供了強大的現成用戶模型,其中Django提供更安全,更直觀的用戶身份驗證流程得到最佳方法。網站有兩種類型:靜態和動態。Django是用於開發動態網站的框架。靜態網站是僅提供信息的網站,但沒有交互(除了簡單的頁面請求)都已註冊到伺服器。
  • python開發web服務 bottle框架
    開發功能不是特別複雜的web服務,可以考慮使用bottle框架。原因:一、Python開發效率高呀!不信你比比同樣的功能Python幾行可以搞定?換java試試?換C++試試?作為這幾種語言都使用過的我來說,用過java就儘量不用C++,用過Python就儘量不用java,真的不堪回首。
  • Python培訓機構哪家好?怎麼選?
    Python在IT行業來說還是很火的開發語言的,而且運用到的範圍也是越來越廣了,比如說python爬蟲、圖像處理、web層序開發等等。但是如果說你想要追上python這場熱潮的話,那麼還是要通過系統性的學習python技術來進入到這個行業的。那麼零基礎的學員來說python培訓機構哪家好?
  • 一步步教你開始使用Python開發Web應用
    那麼你準備使用它來做一些web開發,但在探討細節之前,讓我們從頭開始。  學習Python的基礎  截至目前,Python有兩個版本,2.7.5和3.3是目前Python的穩定版本。你選擇哪個學習並不重要,因為區別非常小——尤其對於初學者而言。
  • python web學習路線知識點分享!
    如果你想做python web相關的東西,下邊這些東西可以參考學習:基礎:linux命令,計算機網絡,python語言,http協議,基礎算法數據>結構python: 內置庫,爬蟲庫,web框架,資料庫接口等。
  • Python開發平均工資高不高
    現在,隨著python越來越火,也有越來越多的人學習,還有很多小白,覺得python火,好學,大多數都是有跟風嫌疑!那學習python到底是否有前途呢?Python開發平均工資高不高?Python的用武之地有很多,它可讀性較好且開發效率很高、有著豐富的第三方庫(例如GUI、API、開發框架等)。
  • 學會Python+Selenium,分分鐘搭建Web自動化框架!
    用python+selenium實現UI自動化測試,要有一些HTML和xpth的基礎,當然python基礎一定是必須要會的。筆者建議花點時間了解下相關基礎知識,不至於後面發懵。一、什麼是selenium?selenium是個強大的工具集。
  • python久負盛名且成熟的web框架
    最初用來製作在線新聞的Web站點開源Web框架,遵守BSD協議Berkeley Software Distribution,始於197X年UC伯克利分校學生發行的軟體(包括Pascal系統和一個編輯器ex)給於使用者很大自由的協議,允許二次開發和商用
  • 雲計算培訓學院,雲計算Python自動化運維開發實戰
    後來發現工作量大的時候shell開始變慢,實現某個功能使用shell感覺力不從心,聽人說python能實現shell能做的一切功能,而且開發效率高,速度快,慢慢的就認識了python,多多少少看點簡單的東西。
  • 3個既簡單又強大的Python Web 框架
    DjangoPython 界最流行的 web 框架。Django是一個高級別的PythonWeb框架,它鼓勵快速開發和乾淨、實用的設計。它是由經驗豐富的開發人員構建的,它處理了Web開發中的許多麻煩,因此您可以專注於編寫應用程式,而無需重新發明方向盤。它是免費的,開源的。Django的設計是為了幫助開發人員儘快將應用程式從概念到完成。Django非常重視安全性,並幫助開發人員避免許多常見的安全錯誤。
  • 10道題教你使用python Django框架來實現web應用,值得收藏
    the web client <-> the web server <-> the socket <-> uwsgi <-> Djangouwsgi伺服器運行在django一側。uWSGI(C語言書寫)+Django相比與單獨使用Django,使用多進程,發揮多核的優勢,支持的並發量更高。
  • 用Python構建數據科學Web應用程式
    在本文中,我將向你展示如何使用streamlit python庫快速構建一個簡單的數據驅動web應用程式,只需幾行代碼。作為一名數據科學家或機器學習工程師,能夠部署我們的數據科學項目是很重要的。傳統的使用Django或Flask這樣的框架來部署機器學習模型可能是一項艱巨和/或耗時的任務。
  • 基於《Flask Web開發:基於Python的Web應用開發實戰》最全總結
    Window7 64位下安裝可能還會報 cl.exe錯workaround: 先conda install mysql-python,再手動複製以下目錄及文件到 venv\Lib\Site-packages下:Anaconda2\Lib\site-packages\MySQLdbAnaconda2\Lib\site-packages\MySQL_python
  • 如何在Windows上做Python開發?微軟出了官方教程
    微軟最近發布了一系列官方教程,終於……教程地址:https://docs.microsoft.com/zh-cn/windows/python/這些教程將指導使用者如何設置開發環境、是否在原生 Windows 或 Windows Subsystem for Linux (WSL) 系統上安裝自己的工具,以及如何集成 VS
  • 深圳Python培訓班打造行業高標準Python人才
    豆瓣就是使用Python作為Web開發作為基礎語言,知乎的整個架構也是基於Python語言更勝一籌大數據方向、運維方向等多種方向。各種類型的企業實戰項目,一比一教學。Python火的原因1、python相比別的高級語言集成度更高,除了執行的效率低些,開源可以調用的類庫實在太多了,要實現一個功能,如果換作傳統的程式語言,需要實現基本的功能模塊,但直接調用類庫很方便的搞定,特別適合零基礎的學習, 幾行代碼就能實現很強大的功能。
  • 用Python寫一個簡單的Web框架
    然而,同很多其他的強大軟體一樣,要實現一個功能豐富、健壯高效的Web框架並非易事;如果您打算這麼做,可能使用一個現成的Web框架(如 Django、Tornado、web.py 等)會是更合適的選擇。 本文嘗試寫一個類似web.py的Web框架。好吧,我承認我誇大其辭了:首先,web.py並不簡單;其次,本文只重點實現了 URL調度(URL dispatch)部分。
  • python Web開發:Django重定向總結part1,為什麼要重定向?
    python web開發總結:今天主要給大家講解兩個知識點Django重定向實例來介紹它的含義為什麼要進行重定向下篇文章,我們將學習HTTP重定向的工作原理怎樣實現在Django中重定向python
  • python語言在全球廣泛應用
    下面就跟大家一起詳細聊聊,如何搭建一個實用的python編程環境,做到從零開始從linux到jupyternotebook來進行機器學習項目的學習。一、python初步了解先來談談python吧。python語言用得越來越多,幾乎可以代替c和c++,已經成為了一門通用語言,對於項目開發來說,首要作用就是利用。
  • 10個好用的Python集成開發環境
    PyCharm專業版本支持更多高級的功能,比如遠程開發功能、資料庫支持以及對web開發框架的支持等。3. VIMVIM是一個很先進的文本編輯器,在python開發者社區中很受歡迎。它是一個開源軟體並遵循GPL協議,所以你可以免費的使用它。
  • WebHook 自動化部署和運維工具 git-webhook
    WebHook 自動化部署和運維工具 git-webhook 一個使用 Python Flask + SQLAchemy + Celery + Redis + React 開發的用於迅速搭建並使用 WebHook 進行自動化部署和運維系統,支持:Github / GitLab / GitOsc。