首頁 >後端開發 >Python教學 >燒瓶開始,Python縮影

燒瓶開始,Python縮影

Joseph Gordon-Levitt
Joseph Gordon-Levitt原創
2025-02-16 10:30:14467瀏覽

Getting Started with Flask, a Python Microframework

本文介紹Flask,一個流行的Python微型框架,它為龐大的Django框架提供了一種替代方案。

Flask的設計理念是輕量級和靈活,允許開發者快速輕鬆地創建網絡應用程序。本文將涵蓋Flask是什麼,它的關鍵特性,簡單API的優勢,它在支持第三方擴展方面的靈活性,最常用的Flask擴展,以及何時應該或不應該使用Flask。

要點

  1. Flask特性和用例概述:本文介紹Flask,重點介紹其輕量級、靈活的特性以及其對各種Web項目的適用性。它探討了Flask的簡潔性、擴展支持、關鍵特性以及原型設計、RESTful API和電子商務應用程序等實際用例。
  2. 與Django的比較分析:本文將Flask與Django進行了對比,強調了Flask的微型框架方法,該方法提供了必要的工具,而沒有復雜的結構,這使得它成為需要極簡主義和自定義擴展的項目的理想選擇。
  3. Flask入門:本文提供了關於設置Flask開發環境、創建和運行基本應用程序以及在路由、模板、表單和擴展中利用Flask功能的分步指南。

什麼是Flask?

Flask是用Python編寫的微型Web框架,用於開發Web應用程序。它建立在一個簡單的理念之上:保持簡單和輕量級,只為開發者提供構建Web應用程序所需的最重要工具,而不會帶來不必要的複雜性。

它建立在Werkzeug WSGI工具包之上,該工具包提供了處理請求和響應所需的Web服務器功能,以及Jinja2模板引擎,它使Flask能夠處理HTML模板,允許開發者創建動態Web應用程序。

以下是一些使Flask成為一個很棒的框架的關鍵特性:

  • 它有一個簡單的API,用於創建Web路由和處理請求。
  • Jinja模板引擎支持HTML模板,允許開發者輕鬆創建網頁。
  • 由於它支持第三方擴展,因此它是高度可擴展的,因此開發者可以根據項目的需要安裝擴展。
  • 它捆綁了一個開發服務器,可以輕鬆測試和調試應用程序。

總的來說,Flask提供了一個強大、靈活且簡單的框架來構建Web應用程序。對於新手和經驗豐富的Web開發者來說,它都是一個不錯的選擇,並且是Python Web開發生態系統中最流行的Web框架之一。

Flask的優勢

現在讓我們更詳細地了解一下在開發中使用Flask的一些優勢。

簡潔性。 Flask的設計理念強調簡潔性,這使得任何級別的開發者都能輕鬆理解和使用它。這也意味著開發者學習曲線非常低,因為他們只需要學習幾個概念和API就能開始構建Web應用程序。

靈活性。 Flask的微型特性——只提供Web框架的核心功能——使開發者能夠使用Flask擴展或第三方庫對其進行自定義和擴展以滿足其需求。

文檔。 Flask文檔非常全面,涵蓋了從基礎到高級主題的內容,使開發者很容易學習如何使用該框架。

兼容性。 Flask與各種Python版本兼容,這使得它易於與現有的Python代碼庫一起使用。它還支持多個Web服務器,這使得它易於部署在各種託管平台上。

快速開發。 Flask的簡潔性和靈活性減少了設置應用程序所需的樣板代碼,使開發者能夠快速入門。

在網絡上,Flask以許多有趣的方式使用。一些值得注意的例子包括:

  • PgAdmin。 Postgres管理界面運行在Flask實例上,為開發者提供了一個界面,他們可以在其中管理他們的Postgres數據庫。
  • Twilio。這是一個通信平台,在其多個API中使用Flask。
  • Pinterest。這個照片分享應用程序在其Web開發堆棧中使用Flask,允許其團隊輕鬆創建一些自定義功能和集成。

何時使用Flask

Flask的簡潔性和易用性使其成為各種Web項目的絕佳選擇:

  • 原型設計。它的易用性和靈活性使其成為快速創建原型的絕佳選擇,允許開發者快速構建和測試新功能。
  • 創建RESTful API。它自己的簡單API使得創建和處理HTTP請求變得容易。
  • 電子商務應用程序。它非常適合構建在線市場和電子商務平台。
  • 金融。它可用於構建金融應用程序,包括帳戶管理、交易處理和投資跟踪。
  • AI。它提供了一種有用且直接的方法來構建和部署AI訓練模型。

何時不使用Flask

雖然Flask是一個很棒的框架,並且有很多優點和強大的功能,但在某些情況下,這些功能會對其不利。讓我們探討一些更適合其他類型框架的項目。

需要內置功能的項目。作為一個微型框架,Flask只提供創建Web應用程序所需的核心部分。如果一個項目需要,比如說,一個管理界面、身份驗證或ORM,那麼Django是一個更好的選擇。

具有嚴格安全要求的項目。由於Flask是一個靈活的框架,我們必須依賴第三方擴展才能在我們的應用程序中實現某種程度的安全。雖然這當然有效,但最好依賴於一個更經受考驗的框架,該框架採用更安全的方法,例如Tornado或Twisted。

強制執行某些編碼標準的項目。由於Flask的靈活性,在上面開發應用程序可以讓開發者以他們認為合適的方式創建應用程序。但是,像Django這樣的框架確保開發者遵循特定的約定,這意味著開發者可以輕鬆地從一個項目轉移到另一個項目。

設置Flask開發環境

現在讓我們看看如何開始使用Flask,從設置開發環境,到安裝,最後啟動一個最小的應用程序。

先決條件

開發機器上必須安裝Python。以下是關於如何安裝Python的說明(儘管我們可能已經安裝了它)。

創建虛擬環境

虛擬環境是一個隔離的Python環境,我們可以在其中為特定項目安裝包,而不會影響全局Python安裝。 (以下是關於為什麼虛擬環境有用的進一步討論。)有不同的包可以在Python中創建虛擬環境,例如virtualenv、venv或Conda。

在本文中,我們將使用virtualenv。我們可以使用以下命令安裝它:

<code>pip install virtualenv</code>

安裝virtualenv後,我們可以創建一個目錄,我們的Flask應用程序將駐留在其中。我們可以隨意命名該目錄——除了Flask,因為這會導致衝突。我們將把它命名為flask_intro:

<code>mkdir flask_intro</code>

接下來,進入該目錄,以便我們可以開始使用它:

<code>cd flask_intro</code>

在這個目錄中,讓我們現在使用以下命令創建我們的虛擬環境:

<code>virtualenv myenv</code>

上面的命令創建一個虛擬環境並將其命名為myenv。讓我們激活它,以便我們可以在其中安裝Flask。要在Linux或macOS上激活虛擬環境,請使用以下命令:

<code>. myenv/bin/activate</code>

在Windows上,使用此命令:

<code>. myenv\Scripts\activate</code>

一旦我們的虛擬環境被激活,它將在shell提示符上顯示虛擬環境的名稱,類似於下面的輸出:

<code>(myenv)/~(path to your project directory)$</code>

在激活的虛擬環境中,我們可以繼續使用以下命令安裝Flask:

<code>pip install Flask</code>

Flask安裝完成後,讓我們繼續創建一個最小的應用程序。我們將創建一個模塊來保存我們的Flask應用程序。為簡單起見,我們將其命名為hello.py。在Linux或macOS上,我們可以使用以下命令在我們的flask_intro目錄中創建該文件:

<code>touch hello.py</code>

上面的命令創建一個名為hello.py的文件。我們也可以使用開發環境來創建該文件。創建文件後,將下面的代碼放入其中並保存:

<code># hello.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
    return 'Hello, World!'</code>

在上面的代碼中,我們從flask模塊導入Flask類,然後創建一個名為app的Flask實例並傳遞__name__變量。

然後我們有路由裝飾器@app.route("/"),這意味著當有人訪問應用程序的根路由後,hello_world()函數將被觸發。

我們可以通過多種方式運行應用程序,所以讓我們來看一些。第一種方法是為flask命令提供多個參數:--app,然後是保存我們Flask應用程序的模塊的名稱,然後運行。見下文:

<code>flask –app <the module="" name="" of="" your=""> run</the></code>

使用上面的示例運行我們的示例應用程序:

<code>pip install virtualenv</code>

這將在默認端口5000上運行我們的應用程序,因此該應用程序將在http://localhost:5000/或http://127.0.0.1:5000/上可用。如果我們希望該應用程序在其他端口上可用,我們可以使用-p或--port選項指定端口。例如:

<code>mkdir flask_intro</code>

這將在端口8080上運行服務器。我們可以運行應用程序的另一種方法是只使用flask run命令。但是,為了能夠做到這一點,我們需要告訴Flask保存Flask實例的模塊的名稱,我們通過設置FLASK_APP環境變量來做到這一點。因此,在我們的例子中,Flask應用程序包含在一個名為hello.py的文件中。所以我們可以這樣設置:

<code>cd flask_intro</code>

現在我們已經設置了FLASK_APP環境變量,我們可以這樣運行開發服務器:

<code>virtualenv myenv</code>

使用這段代碼,我們現在運行了一個Web應用程序。這演示了Flask的核心理念:我們不需要很多樣板代碼就能讓事情順利進行。但是,我們上面設置的應用程序並不是非常實用或有用,因為它只在我們的網頁上呈現字符串“Hello World!”。要執行任何更有用的操作,我們可以轉向模板。接下來我們將看看如何處理它們。

Flask模板

Flask模板是一種創建動態網頁的方式,它可以根據各種因素顯示不同的內容,例如來自數據庫的數據或用戶輸入。 Flask中的模板是HTML和特殊佔位符(稱為模板變量)的組合,這些佔位符在運行時被替換為實際值。

模板存儲在templates目錄中。因此,要使用模板,我們需要從flask導入render_template()方法。 render_template()方法接受模板名稱和任何需要傳遞給模板的可選數據。

讓我們來看一個使用模板呈現網頁的函數示例:

<code>. myenv/bin/activate</code>

在上面的示例中,我們有一個視圖函數——index()——它通過@app.route()裝飾器綁定到根URL("/")。該函數有兩個變量,title和message。最後,我們將模板index.html傳遞給render_template(),以及title和message變量。

為了使上面的代碼工作,我們需要在templates目錄中有一個index.html模板。因此,模板將如下所示:

<code>. myenv\Scripts\activate</code>

在index.html文件中,佔位符{{title}}和{{message}}被替換為在render_template()方法中傳遞給模板的值。

模板還可以包含更複雜的邏輯,例如if語句和for循環,這允許生成更動態的頁面。

因此,Flask中的模板為開發者提供了一個非常強大的選項,用於創建充滿用戶生成信息的動態網頁。

Flask路由

大多數Web應用程序將擁有多個URL,因此我們需要有一種方法來知道哪個函數處理哪個URL。在Flask中,這種映射稱為路由——將URL綁定或映射到視圖函數的過程。將URL綁定到視圖函數允許應用程序處理不同類型的請求,例如GET、POST、PUT、DELETE等等。它還使應用程序能夠處理來自不同客戶端的多個請求。

要在Flask中設置路由,我們使用route()裝飾器。裝飾器將URL綁定到視圖函數——因此,當用戶訪問應用程序中存在的URL時,Flask會觸發關聯的視圖函數來處理請求。

讓我們來看一個例子:

<code>pip install virtualenv</code>

在上面的示例中,我們定義了一個about URL (/about)。當應用程序接收到about URL的請求時,Flask會調用about()函數,該函數返回字符串“This is the about page”。

到目前為止,即使這些示例返回不同的頁面,它們都只使用GET HTTP請求。為了能夠處理任何特定的請求,我們可以將HTTP方法指定為route()裝飾器的可選參數。

讓我們來看一個PUT請求的示例:

<code>mkdir flask_intro</code>

在這個例子中,我們定義了一個路由來處理PUT請求,以更新給定其user_id的用戶詳細信息。我們在路由中使用來指示用戶ID應該是一個整數。

在update_user()函數中,我們使用request.get_json()方法從請求體獲取用戶數據。我們對用戶數據執行某些操作,例如更新數據庫中的用戶,然後返回一個指示成功或失敗的響應以及一個HTTP狀態代碼(在這種情況下為200,表示成功)。

總的來說,路由允許Flask能夠處理不同類型的請求,並允許我們的應用程序根據用戶訪問的URL以不同的方式處理和處理數據。

Flask表單和驗證

除了為用戶顯示數據外,Flask模板還可以接收用戶的輸入以進行進一步處理或存儲。為此,Flask提供了對處理HTML表單和處理用戶輸入的內置支持。 Flask表單基於WTForms庫,該庫提供了一種靈活而強大的方法來處理表單數據和執行驗證。但是,該庫不是標準Flask安裝的一部分,因此我們需要使用以下命令安裝它:

<code>cd flask_intro</code>

安裝WTForms後,要在Flask中使用表單,我們需要定義一個表單類,該類將繼承自flask_wtf.FlaskForm。該類將包含表單上的字段以及應該應用於它們的任何驗證規則。

讓我們來看一個登錄表單的示例:

<code>virtualenv myenv</code>

在上面的示例中,我們定義了一個帶有兩個字段——email和password——以及一個提交按鈕的登錄表單。我們還有一個validators參數,用於為每個字段指定驗證規則。例如,在這種情況下,我們要求email字段包含有效的電子郵件地址,password字段包含至少六個字符的密碼。

定義了表單類後,我們可以在登錄視圖函數中使用它來呈現表單和處理用戶提交的表單數據。讓我們來看一個視圖函數的示例:

<code>pip install virtualenv</code>

在上面的示例中,我們有一個接受兩種HTTP方法(GET和POST)的登錄視圖,因此當用戶從瀏覽器訪問URL時,LoginForm將使用render_template方法呈現為HTML表單,當用戶提交表單時,我們使用validate_on_submit方法檢查表單是否有效。如果表單有效,我們將訪問電子郵件和密碼。

login.html表單可能如下所示:

<code>mkdir flask_intro</code>

上面的模板將呈現電子郵件和密碼字段及其標籤,以及帶有文本“Login”的提交按鈕。 form.csrf_token字段包含在內,以防止跨站點請求偽造(CSRF)攻擊。 {% for %}循環用於顯示可能發生的任何驗證錯誤。

通過使用Flask表單,我們有了一種強大的方法來處理用戶輸入,並且我們將能夠驗證他們輸入的數據。

Flask擴展

正如我們所看到的,Flask是一個微型框架,它只包含創建Web應用程序所需的最重要部分。但是,如果我們需要添加Flask本身沒有提供的功能,我們需要向安裝中添加包。 Flask擴展是我們提供此附加功能的方式。我們可以簡單地安裝所需的包。 Flask社區創建了許多擴展。

以下是一些最流行的擴展:

  • Flask-SQLAlchemy:提供與SQLAlchemy工具包的集成,可以輕鬆與數據庫交互。
  • Flask-Login:為Flask提供用戶身份驗證和會話管理。
  • Flask-Mail:提供一個簡單的界面來從Flask發送電子郵件。

Flask社區創建了數百個擴展來處理不同的功能。使用擴展通常很簡單。首先,我們需要使用pip安裝所需的擴展。

讓我們來看一個使用Flask-SQLAlchemy的示例。首先,我們需要安裝它:

<code>cd flask_intro</code>

接下來,我們需要配置它。例如:

<code>virtualenv myenv</code>

在上面的示例中,我們有一個User模型,其中包含username和email字段。我們還配置了SQLALCHEMY_DATABASE_URI,指示我們使用位於example.db的SQLite數據庫。設置好之後,我們現在可以使用db對象與數據庫進行交互。例如,我們可以創建一個新用戶並將其添加到數據庫中,如下所示:

<code>. myenv/bin/activate</code>

使用Flask擴展,我們的應用程序能夠擁有比通常使用核心Flask實現時更多的功能。

結論

在本文中,我們介紹了Flask,一個輕量級且靈活的Python Web框架。我們討論了使用Flask進行Web開發的優勢,包括其簡潔性、靈活性和易用性。我們還介紹瞭如何設置開發環境、創建路由、使用模板、處理表單以及使用Flask-SQLAlchemy等擴展。

總而言之,Flask是構建任何規模Web應用程序(從小型的個人項目到大型的商業應用程序)的絕佳選擇。它易於學習和使用,但也通過其眾多擴展提供高級功能。

如果您有興趣了解更多關於Flask的信息,以下是一些額外的資源:

  • Flask文檔
  • Miguel Grinberg的Flask Mega-Tutorial
  • Miguel Grinberg的Flask Web Development
  • 一個簡單的Flask應用程序教程
  • Real Python Flask教程

如果您想了解更多關於Django和Flask及其最佳用例的信息,請查看《使用Django和Flask進行Python Web開發》。

您還可以查看這些免費的Flask樣板來構建您的第一個Web應用程序。

關於Flask(Python框架)的常見問題解答

什麼是Flask?

Flask是Python的微型Web框架。它旨在輕量級且易於使用,使其成為開發Web應用程序和API的絕佳選擇。

如何安裝Flask?

您可以使用pip(Python的包管理器)安裝Flask。使用命令<code>pip install Flask</code>在您的系統上安裝Flask。

Flask的關鍵特性是什麼?

Flask以其簡潔性、靈活性和極簡主義而聞名。它提供URL路由、請求處理和模板渲染等功能,同時允許開發者根據需要選擇和集成其他組件。

Flask與其他Python Web框架(如Django)相比如何?

Flask是一個微型框架,而Django是一個全棧Web框架。 Flask提供更大的靈活性和自由度來選擇您的組件,而Django則附帶許多內置功能和約定。

我可以用Flask構建RESTful API嗎?

是的,Flask非常適合構建RESTful API。其簡潔性和對HTTP方法的支持使其成為創建API端點的熱門選擇。

Flask適合大型Web應用程序嗎?

Flask可用於大型應用程序,但與Django等全棧框架相比,它可能需要更多的手動配置和組件集成。

以上是燒瓶開始,Python縮影的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn