Files
template/PROJECT_STRUCTURE.md

155 lines
6.0 KiB
Markdown
Raw Permalink Normal View History

2025-12-21 00:20:27 +08:00
# 项目结构说明
## 目录结构
```
template/
├── src/ # 源代码目录
│ └── your_app/ # 主应用包(需要重命名为你的应用名)
│ ├── __init__.py # 应用工厂创建Flask应用实例
│ ├── app.py # 应用入口(可选,可直接运行)
│ ├── models/ # 数据模型
│ │ ├── __init__.py # 导出db实例和所有模型
│ │ └── example.py # 示例模型
│ ├── routes/ # 路由定义
│ │ ├── __init__.py # 主路由蓝图
│ │ └── *.py # 其他路由模块
│ ├── services/ # 业务逻辑层
│ │ └── __init__.py # 服务模块初始化
│ ├── utils/ # 工具函数
│ │ ├── __init__.py # 工具模块初始化
│ │ └── helpers.py # 辅助函数
│ ├── forms/ # 表单定义可选如果使用WTForms
│ │ └── __init__.py
│ ├── static/ # 静态资源CSS、JS、图片等
│ │ ├── css/
│ │ ├── js/
│ │ └── images/
│ └── templates/ # Jinja2模板文件
│ ├── base.html # 基础模板
│ └── *.html # 其他模板
├── config/ # 配置管理
│ ├── __init__.py # 配置选择器,根据环境变量选择配置
│ ├── base.py # 基础配置类,所有环境通用配置
│ ├── development.py # 开发环境配置
│ ├── production.py # 生产环境配置
│ ├── testing.py # 测试环境配置
│ └── local.py # 本地环境配置
├── requirements/ # 依赖管理(分类管理)
│ ├── base.txt # 基础依赖(项目运行必需)
│ ├── development.txt # 开发依赖(开发工具)
│ ├── production.txt # 生产依赖WSGI服务器等
│ └── test.txt # 测试依赖(测试框架)
├── tests/ # 测试目录
│ ├── __init__.py
│ ├── conftest.py # pytest配置和fixtures
│ └── test_*.py # 测试文件
├── migrations/ # 数据库迁移Flask-Migrate自动生成
│ ├── versions/ # 迁移版本文件
│ ├── env.py # 迁移环境配置
│ └── alembic.ini # Alembic配置
├── logs/ # 日志目录(自动生成)
│ └── app.log # 应用日志
├── uploads/ # 上传文件目录(自动生成)
├── docs/ # 文档目录
│ ├── README.md # 文档索引
│ ├── api/ # API文档
│ │ └── README.md
│ ├── development/ # 开发文档
│ │ └── README.md
│ └── deployment/ # 部署文档
│ └── README.md
├── scripts/ # 工具脚本
│ └── init_project.py # 项目初始化脚本
├── .gitignore # Git忽略文件
├── .flake8 # flake8代码检查配置
├── pytest.ini # pytest测试配置
├── env.example # 环境变量模板
├── gunicorn.conf.py # Gunicorn生产服务器配置
├── run_dev.py # 开发环境启动脚本
├── run_production.py # 生产环境启动脚本(测试用)
├── README.md # 项目说明文档
├── QUICK_START.md # 快速开始指南
└── PROJECT_STRUCTURE.md # 本文件
```
## 核心文件说明
### 应用工厂 (`src/your_app/__init__.py`)
使用工厂模式创建Flask应用支持
- 多环境配置
- 扩展初始化
- 蓝图注册
- 错误处理
### 配置管理 (`config/`)
- **base.py**: 所有环境通用的配置
- **development.py**: 开发环境(调试模式开启)
- **production.py**: 生产环境(安全配置)
- **testing.py**: 测试环境(内存数据库)
- **local.py**: 本地环境(可自定义)
通过 `FLASK_ENV` 环境变量自动选择配置。
### 依赖管理 (`requirements/`)
分类管理依赖,便于不同环境安装:
- **base.txt**: 核心依赖
- **development.txt**: 开发工具
- **production.txt**: 生产服务器
- **test.txt**: 测试框架
### 测试 (`tests/`)
使用pytest框架
- **conftest.py**: 定义测试fixtures
- **test_*.py**: 测试用例
## 使用建议
### 1. 项目命名
`your_app` 替换为你的实际项目名称:
- 目录: `src/your_app` -> `src/my_project`
- 导入: `from src.your_app import ...` -> `from src.my_project import ...`
### 2. 添加新功能
- **路由**: 在 `routes/` 创建新文件,定义蓝图,在 `__init__.py` 注册
- **模型**: 在 `models/` 创建新文件,运行迁移
- **服务**: 在 `services/` 创建业务逻辑
- **工具**: 在 `utils/` 创建辅助函数
### 3. 环境配置
通过 `.env` 文件管理配置不要提交到Git。
### 4. 数据库迁移
始终使用Flask-Migrate管理数据库变更
```bash
flask db migrate -m "描述"
flask db upgrade
```
## 最佳实践
1. **代码组织**: 按功能模块组织代码,保持单一职责
2. **配置管理**: 所有配置通过环境变量,不要硬编码
3. **错误处理**: 统一错误处理,返回标准格式
4. **日志记录**: 重要操作记录日志
5. **测试覆盖**: 关键功能编写测试
6. **文档更新**: 及时更新文档,保持同步