路由
路由用于将 URL 与视图函数绑定,决定用户访问某个路径时由哪段代码处理。Flask 通过装饰器声明路由,是构建应用的第一步。
基础用法
@app.get / @app.post / @app.put / @app.delete / @app.patch 是 Flask 2.0+ 提供的快捷装饰器。未声明的方法访问该路径时会返回 405 Method Not Allowed。
URL 参数与转换器
URL 中用 <变量名> 捕获路径片段,并可指定类型转换器:
内置转换器:string(默认,不含斜杠)、int、float、path(含斜杠)、uuid。类型不匹配时直接返回 404,无需手动校验。
构造 URL:url_for
不要在代码和模板里硬编码 URL,使用 url_for() 以端点名反向生成:
端点名默认是视图函数名;蓝图中的端点要加蓝图名前缀,如 url_for("blog.list_posts")。
重定向与 abort
尾部斜杠的行为
- 路由定义为
/projects/(带尾斜杠):访问/projects会被 308 重定向到/projects/。 - 路由定义为
/about(不带尾斜杠):访问/about/直接 404。
保持团队内风格统一可以避免重定向带来的额外请求。
自定义转换器
需要正则或特殊匹配时,可以注册自定义转换器:
常见注意事项
- 路由按注册顺序与具体程度匹配,避免定义相互重叠、含义模糊的路径。
- 视图函数名(端点名)必须唯一,重复会在启动时报错。
- 用
flask routes命令可以列出当前应用的全部路由,便于排查。