Flask框架URL管理操作示例【基于@app.route】

何川
何川
发布时间:2026-10-13| 3人浏览过
原创

本文详解Flask框架中基于@app.route的URL管理技巧,涵盖动态URL规则、多种参数转换器(string、int、float等)的使用,以及通过Werkzeug实现URL唯一性与斜杠重定向的最佳实践,帮助开发者构建优雅且规范的Web路由。

本文详细介绍Flask框架中URL管理的实现方式,供读者参考学习。

动态URL规则

URL规则支持添加变量部分,从而将符合相同模式的URL抽象为统一的URL模式。例如“/item/1/”和“/item2/”。若不进行抽象,则需要分别编写不同的路由。

@app.route("/item/1/")

动态URL的写法如下:

@app.route("/item1/<id>/")
def item1(id):
  pass

尖括号内的内容为动态参数,所有匹配“/item/”前缀的URL都会映射到该路由,并在内部将id作为参数传入。默认情况下,该参数类型为字符串。若需指定其他类型,可采用特定标记格式,支持的转换器包括:

  • string:接收任何不含斜杠“/”的文本(默认类型)
  • int:接收整数
  • float:与int类似,但接收浮点数
  • path:与默认类型相似,但允许接收斜杠
  • uuid:仅接受UUID格式的字符串
  • any:可指定多种路径,但需传入相应参数
@app.route("/any(a,b):page_info")
def page_info(page_info):
  pass

访问“/a/”和“/b/”均符合上述规则。若无需定制子路径,可通过传递参数的方式实现,例如“/item1?name=laowang”。默认情况下,仅支持使用GET方法进行请求,开发者可通过request.args.get("name")获取参数。若需设定使用POST请求,可在URL定义后添加methods=["POST"],如app.route("/item1",methods=["POST"])。此时,开发者可使用request.form.get('name')获取传入的name值。

唯一URL

Flask的URL规则基于Werkzeug的路由模块。该模块的设计灵感源自Apache及早期HTTP服务器,旨在确保URL的优雅性与唯一性。

示例如下:

@app.route("/about/")
def about():
  ...

上述示例类似于文件系统中的文件夹结构。访问结尾不带斜线的URL时,系统会自动重定向至带斜线的规范URL,这有助于避免搜索引擎重复收录同一页面。

另一个示例:

@app.route("/about")
def about():
  ...

若URL定义不带斜线,当用户访问带斜线的URL“/about/”时,将返回Not Found错误。

希望本文的内容对基于Flask框架的Python程序设计有所帮助。

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。