Flask 重定向

Salman Mehmood 2024年2月15日
Flask 重定向

通過這個解釋,我們將學習如何使用 redirect() 函式來重定向使用者,並瞭解我們如何在 Flask 中將其用於多種用途。

藉助 Flask 中的 redirect() 函式重定向使用者

在 Flask 中,重定向相當簡單。它只是通過使用請求或 API 來重定向你網站上的使用者或某人。

有不同的方法來重定向使用者。例如,如果他們登陸你的主頁並登入到你的網站,那麼你可以將他們重定向到會員區,或者你可以將他們重定向到密碼恢復頁面,無論你喜歡哪裡。

通常,重定向是一種將人們從伺服器端傳送到下一頁的方法。因此他們不必在該頁面上發起請求。

在開始編寫程式碼之前,我們將在這裡向你展示 redirect() 函式語法。

語法:

flask.redirect(location, code=302, Response=None)

我們將只使用前兩個引數,locationcodelocation 是一個 URL,code 是隨請求或 redirect() 響應傳送的 HTTP 狀態程式碼。

讓我們用一些程式碼來證明這一點。在這裡,我們將快速設定一個 Flask 應用程式並從匯入 Flask 開始。

我們將設定幾個路由:一個是建立一個帶有 header 標籤的 index() 函式,另一個是一個 MEMBERS() 函式,它也使用一個帶有特定端點的 header 標籤。

第一個示例是在我們的應用程式中的頁面之間進行重定向。我們建立了兩個檢視或兩個頁面,我們希望導航到索引的人自動重定向到成員頁面。

因此,我們將使用 redirect() 函式和 url_for() 函式。redirect() 函式將為第一個引數獲取一個位置,而這個 location 引數需要是 url_for()

我們只需要在 url_for() 中輸入我們想要的函式名稱,MEMBERS() 函式生成成員的 URL,然後這個 index() 函式將使用者重定向到成員’ 頁。

from flask import Flask, redirect, url_for

app = Flask(__name__)


@app.route("/")
def index():
    return redirect(url_for("MEMBERS"))


@app.route("/members")
def MEMBERS():
    return "<h1>Members Area</h1>"


if __name__ == "__main__":
    app.run(debug=True)

儲存後,如果我們使用索引頁面執行這個應用程式,當我們導航到那裡時,它會將我們重定向到成員頁面。

開啟開發者工具,讓我們看看當我們執行這個頁面時網路在說什麼。我們在這裡請求了索引,它給了我們 302 的狀態。

當我們重定向某人時通常使用 302;它會將我們傳送到成員頁面,但我們沒有請求伺服器執行此操作。

輸出:

Flask 重定向輸出 1

我們還可以將第二個引數更改為 404 作為重定向,這會很奇怪,但我們可以在任何情況下使用它。我們將轉到索引,它告訴我們你應該被自動重定向到目標 URL。如果沒有,請單擊連結

這是因為通常情況下,404 用於錯誤而不是重定向,但如果我們點選 Flask 生成的連結,它會將我們傳送到會員區。除非有特定原因,否則無需修改狀態碼;記在腦子裡。

from flask import Flask, redirect, url_for

app = Flask(__name__)


@app.route("/")
def index():
    return redirect(url_for("MEMBERS"), 404)


@app.route("/members")
def MEMBERS():
    return "<h1>Members Area</h1>"


if __name__ == "__main__":
    app.run(debug=True)

輸出:

Flask 重定向輸出 2

假設你要重定向到任何 URL 而不是會員區;假設你出於某種原因想要重定向到你網站之外的內容。在我們的例子中,我們希望它們被自動重定向到 google.com

from flask import Flask, redirect, url_for

app = Flask(__name__)


@app.route("/")
def index():
    return redirect("https://www.google.com")


@app.route("/members")
def MEMBERS():
    return "<h1>Members Area</h1>"


if __name__ == "__main__":
    app.run(debug=True)

輸出:

Flask 重定向輸出 3

根據該過程的結果,你會將它們重定向到某個地方。例如,如果你確定使用者名稱和密碼有效,你將獲得他們登入資訊的帖子資料。

如果密碼正確,你會將他們重定向到會員區或你想向使用者顯示的任何地方。或者,如果密碼錯誤,你可以將他們重定向到密碼恢復頁面;這完全取決於你,但要知道重定向通常發生在檢視中的一些處理之後。

作者: Salman Mehmood
Salman Mehmood avatar Salman Mehmood avatar

Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.

LinkedIn