Flask 会根据 HTTP 请求的 URL 在路由表中和定义好的路由进行匹配,然后找到对应的函数处理这个请求。

这个过程中需要保存一个 URL 到函数的映射关系,我们把这个映射关系及处理请求的函数之间的关系称为 路由

路由绑定

(1) 使用 route() 装饰器来把函数绑定到 URL

@app.route("/hello/")
def hello():
    return "hello bro!"

在这里,URL /hello/ 绑定到 hello() 函数。因此,如果用户访问 http://127.0.0.1:5000/hello/ URL,hello() 函数的输出将在浏览器中呈现

(2) 使用 add_url_rule() 函数绑定

def hello():
    return "hello"

app.add_url_rule("/hello/", view_func=hello)

(3) 多个路由绑定同一个视图函数

@app.route("/index/")
@app.route("/hello/")
def hello():
    return "hello bro!"

动态路由

通过把 URL 的一部分标记为 <variable_name> 就可以在 URL 中添加变量。标记的部分会作为关键字参数传递给函数。通过使用 <converter:variable_name> 可以选择性的加上一个转换器,为变量指定规则

# 动态路由
@app.route("/user/<username>/")
def view(username):
    return username

# 为变量指定规则
# /path/https://www.baidu.com/
@app.route("/path/<path:url_path>/1")
def show_path(url_path):
    return url_path
转换器类型 描述
string 接受任何不包含斜杠的文本
int 接收正整数
float 接收正浮点数
path 类似string,但是可以包含斜杠
uuid 接受 UUID 字符串