Flask 应用程序路由

Salman Mehmood 2024年2月15日
Flask 应用程序路由

我们将学习如何在 Flask 中创建路由,以及在 Flask 中调用路由时如何获得响应。

使用 Flask 中的 app.route() 装饰器创建页面

我们可以路由的方式是通过使用装饰器,那么装饰器是什么?好吧,每当我们看到一个带有类似 @app.route('/') 的函数的 @ 符号时,它就是一个装饰器。

这是一种包装现有 Python 函数并修改其行为的方法。我们将 URL 路由或映射到返回值,并且每当用户请求 URL 时,服务器的响应将是任何函数的返回值。

我们将向你展示一些更有意义的示例,因此让我们创建一条路线。

@app.route('/fund-api')

现在我们将定义一个名为 Fund_Func() 的函数,因此每当用户访问通常是我们的 URL 的页面时,例如 /fund-api,该函数将返回包含在该函数下的所有内容。我们将返回 HTML <h2> 标签。

def Fund_Func():
    return "<h2>Your fund is returned</h2>"

当我们保存并运行这个服务器时,我们可以访问我们的索引页面并继续在 URL 中写入 fund-api,这意味着我们请求服务器提供 Fund_Func 页面并检查请求是否有效.如果路由有效,那么它将运行该路由中存在的函数。

请求服务器返回函数

使用 render_template() 包含 HTML 有更好的方法。我们要做的另一件事是在路由中使用变量。

假设我们正在设置我们的网页,在这个网页中,我们有一个配置文件部分,我们想知道哪个用户正在使用它的配置文件。

我们需要加入该变量以成为此 URL 的一部分,并且根据该变量,内容会发生变化。现在我们要创建一个新路由,在路由内部,我们将添加一个名为 candidate_name 的变量并将其放在尖括号之间。

现在我们将在路由中使用的函数中传递一个参数,然后我们可以返回这个变量以及我们想要在屏幕上显示的任何内容。我们将从 URL 传递这个变量。

@app.route("/fund-user-api/<candidate_name>")
def Fund_Func_Var(candidate_name):
    return "<h2>Hi %s,your fund is returned</h2>" % candidate_name

当我们通过 URL 传递变量值时,它将返回带有我们传递的参数的响应,如果我们不传递参数值,它将引发错误,因为这也是 URL 的一部分。

将用户传递到 URL

完整的 Python 代码:

from flask import Flask

app = Flask(__name__)


@app.route("/")
def index():
    return "The main page"


@app.route("/fund-api")
def Fund_Func():
    return "<h2>Your fund is returned</h2>"


@app.route("/fund-user-api/<candidate_name>")
def Fund_Func_Var(candidate_name):
    return "<h2>Hi %s,your fund is returned</h2>" % candidate_name


if __name__ == "__main__":
    app.run(debug=True)
作者: 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