Flask 蓝图项目结构示例
为了更好地理解如何使用 Flask 蓝图来组织项目,我们来构建一个典型的 Flask 项目结构示例。这个结构适用于中小型应用程序,并可以根据项目的规模进一步扩展。
1. 项目结构概览
my_flask_app/
│
├── app/
│ ├── __init__.py # 应用工厂,初始化 Flask 实例和蓝图
│ ├── routes.py # 主应用的路由定义
│ ├── models.py # 数据库模型
│ ├── extensions.py # 各种 Flask 扩展的初始化(如数据库、缓存等)
│ ├── templates/ # 全局模板文件夹
│ ├── static/ # 全局静态文件(CSS、JS、Images)
│ │ └── css/
│ │ └── js/
│ │ └── images/
│ ├── blueprints/ # 蓝图模块
│ │ ├── __init__.py # 蓝图模块初始化
│ │ ├── auth/ # 用户认证相关蓝图
│ │ │ ├── __init__.py
│ │ │ ├── routes.py
│ │ │ ├── forms.py
│ │ │ ├── templates/
│ │ │ └── static/
│ │ ├── blog/ # 博客相关蓝图
│ │ │ ├── __init__.py
│ │ │ ├── routes.py
│ │ │ ├── models.py
│ │ │ ├── templates/
│ │ │ └── static/
│ └── services/ # 业务逻辑层,处理与数据库的交互
│ ├── __init__.py
│ ├── user_service.py
│ └── blog_service.py
│
├── tests/ # 单元测试
│ ├── __init__.py
│ ├── test_auth.py
│ ├── test_blog.py
│ └── test_factory.py
│
├── migrations/ # 数据库迁移文件夹(Flask-Migrate)
│
├── config.py # 配置文件(如数据库 URI、调试模式等)
├── run.py # 启动应用程序的脚本
├── requirements.txt # Python 依赖包列表
└── README.md # 项目说明文件
2. 项目结构详解
-
app/
__init__.py
:应用工厂函数定义,创建并配置 Flask 实例,注册蓝图和扩展。routes.py
:定义主应用的全局路由。models.py
:定义全局数据库模型。extensions.py
:初始化各种 Flask 扩展(如 SQLAlchemy、Flask-Migrate、Flask-Login 等)。templates/
:全局模板文件夹,存放 HTML 模板。static/
:全局静态文件夹,存放 CSS、JS 和图片等静态资源。blueprints/
:存放各个模块的蓝图,每个模块都是一个独立的子应用。services/
:业务逻辑层,处理数据访问逻辑,解耦路由和数据库操作。