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