Flask 中如何使用 URL 规则?

推荐答案

在 Flask 中,URL 规则是通过 @app.route() 装饰器来定义的。这个装饰器将 URL 路径与视图函数关联起来。以下是一个简单的示例:

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

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

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

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

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

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

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

在这个示例中:

  • / 是根路径,访问时会调用 index() 函数。
  • /about 是另一个路径,访问时会调用 about() 函数。
  • /user/<username> 是一个动态路径,<username> 是一个变量,Flask 会将其作为参数传递给 show_user_profile() 函数。
  • /post/<int:post_id> 也是一个动态路径,但 post_id 被限制为整数类型。

本题详细解读

URL 规则的基本概念

在 Flask 中,URL 规则用于将特定的 URL 路径映射到相应的视图函数。通过这种方式,当用户访问某个 URL 时,Flask 会调用与该 URL 关联的视图函数,并返回相应的响应。

静态 URL 规则

静态 URL 规则是指 URL 路径是固定的,不包含任何变量。例如:

在这个例子中,/about 是一个静态 URL 路径,访问该路径时,Flask 会调用 about() 函数并返回字符串 'This is the about page.'

动态 URL 规则

动态 URL 规则允许 URL 路径中包含变量部分。这些变量部分会被传递给视图函数作为参数。例如:

在这个例子中,<username> 是一个变量,Flask 会将 URL 中的实际值传递给 show_user_profile() 函数的 username 参数。例如,访问 /user/john 时,username 的值将是 'john'

变量类型转换

Flask 允许在动态 URL 规则中对变量进行类型转换。默认情况下,变量被视为字符串类型,但可以通过在变量前添加类型转换器来指定其他类型。例如:

在这个例子中,<int:post_id> 表示 post_id 必须是一个整数。如果 URL 中的 post_id 不是整数,Flask 会返回 404 错误。

支持的变量类型

Flask 支持以下几种变量类型转换器:

  • string: 默认类型,接受任何不包含斜杠的文本。
  • int: 接受正整数。
  • float: 接受正浮点数。
  • path: 类似于 string,但可以包含斜杠。
  • uuid: 接受 UUID 字符串。

URL 规则的组合

你可以将多个 URL 规则组合在一起,以便为同一个视图函数定义多个路径。例如:

在这个例子中,访问 //home 都会调用 index() 函数。

URL 构建

Flask 还提供了 url_for() 函数,用于根据视图函数名生成 URL。这在模板中特别有用,可以避免硬编码 URL。例如:

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

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

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

在这个例子中,url_for('about') 会生成 /about 的 URL。

纠错
反馈