Flask 中如何定义路由?

推荐答案

在 Flask 中,定义路由的最常见方式是使用 @app.route() 装饰器。以下是一个简单的示例:

-- -------------------- ---- -------
---- ----- ------ -----

--- - ---------------

---------------
--- -------
    ------ ------- -------

--------------------
--- --------
    ------ ------ -----

-- -------- -- -----------
    ---------

在这个示例中,@app.route('/') 定义了一个根路由,当用户访问网站的根路径时,会调用 home() 函数并返回 "Hello, World!"。@app.route('/about') 定义了一个 /about 路由,当用户访问 /about 路径时,会调用 about() 函数并返回 "About Page"。

本题详细解读

1. 路由的基本概念

在 Flask 中,路由是指将 URL 路径映射到特定的视图函数。当用户访问某个 URL 时,Flask 会根据定义的路由规则调用相应的视图函数,并将函数的返回值作为响应返回给用户。

2. 使用 @app.route() 装饰器

@app.route() 是 Flask 中最常用的定义路由的方式。它接受一个 URL 规则作为参数,并将该规则与紧随其后的视图函数绑定在一起。例如:

在这个例子中,/user/<username> 是一个动态路由,<username> 是一个变量部分,Flask 会将其作为参数传递给 show_user_profile() 函数。

3. HTTP 方法

默认情况下,@app.route() 只响应 GET 请求。如果需要处理其他 HTTP 方法(如 POSTPUTDELETE 等),可以通过 methods 参数指定:

4. URL 构建

Flask 提供了 url_for() 函数来动态生成 URL。这在模板中特别有用,可以避免硬编码 URL:

5. 路由的其他选项

@app.route() 还支持其他一些选项,例如:

  • defaults: 为路由提供默认参数。
  • redirect_to: 重定向到另一个路由。
  • subdomain: 指定子域名。

例如:

6. 路由的注册顺序

Flask 会按照路由注册的顺序进行匹配,因此定义路由时需要注意顺序,避免冲突。

7. 蓝图(Blueprints)

对于大型应用,可以使用 Flask 的蓝图功能来组织路由。蓝图允许你将应用分解为多个模块,每个模块可以定义自己的路由。

-- -------------------- ---- -------
---- ----- ------ ---------

-- - ------------------ ---------

-------------------
--- --------
    ------ ------ -----

--------------------------

通过使用蓝图,可以更好地组织代码,并支持模块化开发。

纠错
反馈