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

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

本文详解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 相关产品和应用

全部下载

专题列表