溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python Web開發(fā)用Flask還Django框架好

發(fā)布時(shí)間:2021-09-04 21:21:03 來源:億速云 閱讀:191 作者:chen 欄目:編程語言

本篇內(nèi)容主要講解“Python Web開發(fā)用Flask還Django框架好”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Python Web開發(fā)用Flask還Django框架好”吧!

是否有考慮過用 Python 開發(fā)網(wǎng)站?然后你可能聽說過 Django 和 Flask。這兩個(gè)是 Python 最流行的 Web 框架(當(dāng)然還有更多)?,F(xiàn)在的問題是你使用哪一個(gè)更合適?

本文旨在簡要介紹兩種框架的工作原理,它們的相同點(diǎn)和不同點(diǎn),以及在選擇框架時(shí)應(yīng)考慮的一些要點(diǎn)。

一、簡要概覽

基于 Python 的主要應(yīng)用程序是使用命令行界面創(chuàng)建的,可以在命令提示符或 shell 腳本上運(yùn)行。當(dāng)然,人們希望使用 Python 做更多事情,而不僅僅是自動(dòng)執(zhí)行任務(wù)和管理工作流程。因此,Web 框架順勢而生。

Django

Python Web開發(fā)用Flask還Django框架好

Django 是一個(gè) Python Web 框架,適合具有開發(fā)時(shí)間限制要求的完美主義者。Django 提供功能齊全的模型 - 視圖 - 控制器框架。它的開發(fā)基于“內(nèi)置電池的方法”(譯者注:Django 自帶全套工具,可以開箱即用),使開發(fā)人員無需第三方庫和工具即可創(chuàng)建網(wǎng)站。隨著 2005 年 7 月 15 日的第一次發(fā)布, Django 由 Django 軟件基金會(huì)(DSF)開發(fā)和管理。它是免費(fèi)且開源的,已經(jīng)發(fā)布了許多個(gè)版本。

Flask

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

二、 Flask 與 Django 兩者之間的對(duì)比

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

  • 受歡迎度:使用率和案例

  • 入門文檔和導(dǎo)航的易用程度

  • 模板引擎和系統(tǒng)

  • 路由系統(tǒng)

  • 用戶靈活性

  • 管理系統(tǒng)的可用性

  • 開發(fā)速度

受歡迎度:使用率和案例

幾個(gè)頂級(jí)網(wǎng)站使用 Django 和 Flask。來自 GitHub 和其他網(wǎng)站的統(tǒng)計(jì)數(shù)據(jù)表明,Django 比 Flask 更受歡迎。這種受歡迎程度僅限于開發(fā)人員使用 Django 強(qiáng)大的功能來快速構(gòu)建和部署復(fù)雜的 Web 應(yīng)用程序。同樣,開發(fā)人員使用 Flask 來加速使用固定內(nèi)容的網(wǎng)站的開發(fā)。由 Django(Bitbucket,Eventbrite,Instagram,Pinterest等)和 Flask(LinkedIn,Netflix,Twilio,Uber)提供支持的一些知名項(xiàng)目積極使用這些框架。

用戶靈活性

兩個(gè)框架之間最大的區(qū)別之一是靈活性。

Django 的 內(nèi)置電池 概念有助于開發(fā)人員在沒有第三方庫和工具的情況下創(chuàng)建各種 Web 應(yīng)用程序。但是,Django 缺乏對(duì)提供的模塊進(jìn)行更改的選項(xiàng)。因此,開發(fā)人員使用內(nèi)置功能創(chuàng)建 Web 應(yīng)用程序。這意味著如果開發(fā)人員想要為 Django 已經(jīng)提供的功能使用不同的庫,那就不容易了。

相反,F(xiàn)lask 使用其可擴(kuò)展的 Web 框架,使用各種 Web 開發(fā)庫和工具實(shí)現(xiàn) Web 應(yīng)用程序的靈活開發(fā)。這使得更有經(jīng)驗(yàn)的開發(fā)人員可以自由地使用他們熟悉的庫和數(shù)據(jù)庫進(jìn)行即插即用。

你不會(huì)被框架強(qiáng)迫你使用的東西所困擾。相反,您可以轉(zhuǎn)向您熟悉的技術(shù)組件。

開發(fā)文檔和導(dǎo)航的易用程度

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

pip install flask

上面的 pip 命令安裝 Flask 及其基本軟件包。在 Flask 上運(yùn)行代碼非常簡單(例如,顯示 “Hi Welcome”)。它需要的只是創(chuàng)建 Flask 類的實(shí)例,然后是顯示 “Hi Welcome” 字符串的路由。

from flask import Flask
app = Flask(__name__)@app.route("/")
 def hi_welcome():
 return "Hi Welcome"
if __name__ == "__main__":
 app.run()

Django 的文檔比 Flask 更廣泛,由于它的復(fù)雜性,這是預(yù)料之中的。Djang 也可以使用 pip 快速安裝。

pip install Django

在 Django 中運(yùn)行代碼涉及使用內(nèi)置命令來創(chuàng)建項(xiàng)目,以及另一個(gè)用于創(chuàng)建應(yīng)用程序的命令。它的啟動(dòng)命令很方便,因?yàn)樗褂昧艘粋€(gè)現(xiàn)成的目錄結(jié)構(gòu)。但是這個(gè)視頻解釋得最好:

路由系統(tǒng)

任何 Web 應(yīng)用程序或網(wǎng)站都必不可少的是路由系統(tǒng)(routing system),它可以創(chuàng)建 URL 并確定加載 URL 時(shí)顯示的內(nèi)容。

Flask采用簡單、輕量級(jí)的Web框架,路由由 route() 裝飾器完成。使用上面的 “Hello World” 示例,第一行是裝飾器。裝飾器是將可調(diào)用(類)作為參數(shù)的函數(shù),然后在返回之前進(jìn)行修改。使用的字符串還告訴 Flask 什么 URL 觸發(fā)其功能。例如,使用 /(http://127.0.0.1:5000 / \),它會(huì)在使用瀏覽器訪問 Flask 時(shí)加載第一頁。

對(duì)于 Django ,它采用了內(nèi)置電池的方法,這使開發(fā)人員更容易完成基本的 Web 開發(fā)任務(wù),如數(shù)據(jù)庫模式遷移,URL 路由和用戶身份驗(yàn)證。自定義 Web 應(yīng)用程序還體驗(yàn) Django 中的進(jìn)程加速,因?yàn)樗峁┝艘龑?dǎo)工具,內(nèi)置模板引擎和 ORM 系統(tǒng)。使用 urls.py 文件處理路由,該文件是在運(yùn)行內(nèi)置的 djangoadmin startproject 命令時(shí)創(chuàng)建的。要定義路由,需要從 Django 導(dǎo)入 URL 方法并創(chuàng)建實(shí)例,指定每個(gè)參數(shù)(關(guān)鍵字參數(shù),現(xiàn)有 URL 模塊和正則表達(dá)式字符串)。管理站點(diǎn)的內(nèi)置 Django URL 默認(rèn)位于 urls.py 文件中。它告訴 Django 你在哪里加載來自指定模塊的 URL 。

管理系統(tǒng)的可用性

Python Web開發(fā)用Flask還Django框架好

Django 使用遵循對(duì)象關(guān)系映射器(ORM)目錄結(jié)構(gòu)和數(shù)據(jù)庫系統(tǒng)的管理系統(tǒng)。當(dāng)使用 Django 進(jìn)行開發(fā)時(shí),它增加了一致性體驗(yàn),因?yàn)槎鄠€(gè)項(xiàng)目具有相同的目錄結(jié)構(gòu)。

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

開發(fā)速度

眾所周知,Django 框架可以為復(fù)雜的 Web 應(yīng)用程序提供快速的開發(fā)速度。由于它提供了完整的功能,因此它提供了所有必要的實(shí)施工具。

Flask 的簡單性允許經(jīng)驗(yàn)豐富的開發(fā)人員在短時(shí)間內(nèi)完成較小的應(yīng)用程序。Django 框架的一個(gè)顯著優(yōu)勢是提供了一個(gè)活躍的社區(qū),旨在幫助您擴(kuò)展應(yīng)用程序的解決方案或使用有用的內(nèi)容使您的工作更輕松。Flask 社區(qū)目前沒那么大,因此找到有用的信息并不容易。

模板引擎和系統(tǒng)

所有 Web 應(yīng)用程序都有一個(gè)支持用戶交互的前端(用戶界面)。由于 Web 應(yīng)用程序不是靜態(tài)的,因此它們采用不同的方法動(dòng)態(tài)生成 HTML。Django 和 Flask 提供令人興奮的模板引擎。

Flask 是使用 Jinja2 模板引擎開發(fā)的。它是一個(gè)現(xiàn)代且設(shè)計(jì)友好的模板,允許開發(fā)人員在集成的沙盒環(huán)境的幫助下模擬動(dòng)態(tài) Web 應(yīng)用程序。Jinja2 模板包含變量和標(biāo)簽。Flask 模板的另一個(gè)關(guān)鍵特性是模板繼承。以下是一些常用的 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 使用內(nèi)置的模板引擎,允許開發(fā)人員毫不費(fèi)力地定義 Web 應(yīng)用程序的面向用戶的層。此外,開發(fā)人員可以使用 Django 模板語言(DTL)編寫模板來創(chuàng)建自定義用戶界面開發(fā)。Django 中的模板語法包括:

single-line comments: {# … #}
multi-line comments: {% comment %} … {% endcomment %}
filters on variables: {{ variable|filter }}
tags: {% … %}
variables: {{ … }}

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

總結(jié)

要開始使用 Flask 和 Django 框架,必須更深入地了解基礎(chǔ)知識(shí)。每個(gè)框架所附帶的差異和好處在于您希望實(shí)施哪種項(xiàng)目。主要對(duì)比包括:

Flask 提供靈活性,簡單性和細(xì)粒度控制。Flask 毫無疑問,讓您決定如何實(shí)現(xiàn)應(yīng)用程序。

Django 為您的 Web 應(yīng)用程序開發(fā)提供管理面板,數(shù)據(jù)庫接口,目錄結(jié)構(gòu)和 ORM 的全面體驗(yàn)。

到此,相信大家對(duì)“Python Web開發(fā)用Flask還Django框架好”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI