项目架构重构(Blueprints):把 5000 行面条代码捋成乐高积木
📂 所属阶段:第四阶段 — 实战演练(道满博客)
🔗 相关章节:路由(Routing)艺术 · Flask-Login 实战
1. 从“单文件爽点”到“重构噩梦”
很多人入门 Flask 时的初体验,一定是单写一个 app.py,敲十几行代码就能看到 Hello World 在浏览器蹦跶——这种“零配置、即时反馈”的爽点,正是 Flask 被称为“微框架”的核心原因。
但爽点很短暂:当你加完首页、登录注册、文章发布、后台管理、API接口甚至错误处理后,app.py 会变成5000+行的面条代码锅:
这时候,你就需要 Flask 官方提供的模块化架构工具——Blueprints(蓝图)。
2. 蓝图是什么?不是画图软件!
简单来说,蓝图是 Flask 中可复用的“功能模块容器”:
它能把原本混在 app.py 里的路由、模板、静态文件、错误处理甚至过滤器,全部分装到独立的文件夹里;最后再通过一个“应用工厂”把这些模块拼接到核心 Flask 应用上。
用蓝图重构后的道满博客目录,会从“扁平混乱”变成“分层清晰”的乐高式结构:
3. 手把手:创建并拼接第一个蓝图
我们先从最简单的主功能蓝图(main_bp) 入手,快速跑通流程。
3.1 定义蓝图实例
每个蓝图模块的 __init__.py,就是它的“身份证”:我们在这里给蓝图起名字、绑定文件路径、加统一的 URL 前缀(可选)。
3.2 写主功能路由
现在路由不用直接装饰 app.route 了,改成装饰 蓝图实例的 route:
3.3 用应用工厂注册蓝图
接下来是重构的核心步骤:把原来直接创建的 app = Flask(__name__) 改成一个函数——应用工厂(create_app),这样我们可以在不同环境(开发/测试/生产)创建不同配置的应用,也能灵活注册蓝图。
3.4 写最简启动文件
最后,启动文件 run.py 简单到离谱:
4. 进阶:带前缀的认证与文章蓝图
4.1 认证蓝图(统一加 /auth 前缀)
认证相关的路由(登录、注册、退出),加个统一前缀更规范:
4.2 文章蓝图(带分页与权限的业务逻辑)
文章蓝图的业务逻辑更复杂,但拆分后依然清晰:
5. 蓝图速查与最佳实践
5.1 核心 API 速查
5.2 避坑指南与最佳实践
- 永远在应用工厂内部导入蓝图:这是避免循环导入的唯一有效方法
- 蓝图内的模板/静态文件必须加子目录:比如
templates/main/index.html,否则多个蓝图有同名模板会冲突 - url_for 必须加蓝图标识前缀:即使是同一个模块内的视图函数跳转,也建议加前缀,保持代码一致性
- 按功能拆分蓝图,不要按技术分层:比如不要拆成“路由模块”“模板模块”,要拆成“用户模块”“文章模块”
- 复杂的蓝图可以继续拆分子模块:比如后台模块可以拆成“文章管理”“用户管理”“配置管理”三个子蓝图
6. 小结
这篇文章我们解决了 Flask 单文件开发的维护性瓶颈,用蓝图把道满博客拆成了乐高式的可复用模块:
- 从“面条代码”到“分层架构”的目录重构
- 主功能、认证、文章三个核心蓝图的创建与路由绑定
- 应用工厂函数的实现与蓝图注册
- 蓝图的核心 API 速查与避坑指南
现在,你可以放心地在 articles 模块里加评论功能,在 auth 模块里加第三方登录,完全不用担心会影响其他模块的代码啦!
🔗 扩展阅读

