259 lines
6.4 KiB
Markdown
259 lines
6.4 KiB
Markdown
|
|
# Python项目模板
|
|||
|
|
|
|||
|
|
这是一个通用的Python项目模板,基于Flask框架的最佳实践,可以直接复制使用,快速启动新项目。
|
|||
|
|
|
|||
|
|
## 项目特性
|
|||
|
|
|
|||
|
|
- ✅ **标准化项目结构** - 清晰的目录组织,易于维护
|
|||
|
|
- ✅ **多环境配置管理** - 支持development/production/testing/local环境
|
|||
|
|
- ✅ **依赖分类管理** - 基础/开发/生产/测试依赖分离
|
|||
|
|
- ✅ **应用工厂模式** - 灵活的Flask应用创建方式
|
|||
|
|
- ✅ **数据库迁移支持** - 使用Flask-Migrate管理数据库版本
|
|||
|
|
- ✅ **环境变量管理** - 使用.env文件管理敏感配置
|
|||
|
|
- ✅ **完整的文档结构** - 包含API、开发、部署文档模板
|
|||
|
|
- ✅ **测试框架集成** - pytest测试配置
|
|||
|
|
- ✅ **日志系统** - 自动配置日志记录
|
|||
|
|
- ✅ **跨域支持** - CORS配置
|
|||
|
|
|
|||
|
|
## 快速开始
|
|||
|
|
|
|||
|
|
### 1. 复制模板
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 复制整个template目录到你的新项目位置
|
|||
|
|
cp -r template my_new_project
|
|||
|
|
cd my_new_project
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 2. 初始化项目
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 创建虚拟环境
|
|||
|
|
python -m venv .venv
|
|||
|
|
|
|||
|
|
# 激活虚拟环境
|
|||
|
|
# Windows
|
|||
|
|
.venv\Scripts\activate
|
|||
|
|
# Linux/Mac
|
|||
|
|
source .venv/bin/activate
|
|||
|
|
|
|||
|
|
# 安装依赖
|
|||
|
|
pip install -r requirements/base.txt
|
|||
|
|
pip install -r requirements/development.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 3. 配置环境变量
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 复制环境变量模板
|
|||
|
|
cp .env.example .env
|
|||
|
|
|
|||
|
|
# 编辑.env文件,填入你的配置
|
|||
|
|
# 至少需要设置:
|
|||
|
|
# - SECRET_KEY
|
|||
|
|
# - DATABASE_URL
|
|||
|
|
# - FLASK_ENV
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 4. 初始化数据库
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 初始化数据库迁移
|
|||
|
|
flask db init
|
|||
|
|
|
|||
|
|
# 创建初始迁移
|
|||
|
|
flask db migrate -m "Initial migration"
|
|||
|
|
|
|||
|
|
# 应用迁移
|
|||
|
|
flask db upgrade
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 5. 运行项目
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 开发模式
|
|||
|
|
python run_dev.py
|
|||
|
|
|
|||
|
|
# 或使用Flask命令
|
|||
|
|
flask run
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 项目结构
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
template/
|
|||
|
|
├── src/ # 源代码目录
|
|||
|
|
│ └── your_app/ # 主应用包(需要重命名)
|
|||
|
|
│ ├── __init__.py # 应用工厂
|
|||
|
|
│ ├── app.py # 应用配置
|
|||
|
|
│ ├── models/ # 数据模型
|
|||
|
|
│ ├── routes/ # 路由定义
|
|||
|
|
│ ├── services/ # 业务逻辑
|
|||
|
|
│ ├── utils/ # 工具函数
|
|||
|
|
│ ├── forms/ # 表单定义(可选)
|
|||
|
|
│ ├── static/ # 静态资源
|
|||
|
|
│ └── templates/ # 模板文件
|
|||
|
|
├── config/ # 配置管理
|
|||
|
|
│ ├── __init__.py # 配置选择器
|
|||
|
|
│ ├── base.py # 基础配置
|
|||
|
|
│ ├── development.py # 开发环境
|
|||
|
|
│ ├── production.py # 生产环境
|
|||
|
|
│ ├── testing.py # 测试环境
|
|||
|
|
│ └── local.py # 本地环境
|
|||
|
|
├── requirements/ # 依赖管理
|
|||
|
|
│ ├── base.txt # 基础依赖
|
|||
|
|
│ ├── development.txt # 开发依赖
|
|||
|
|
│ ├── production.txt # 生产依赖
|
|||
|
|
│ └── test.txt # 测试依赖
|
|||
|
|
├── tests/ # 测试目录
|
|||
|
|
│ ├── __init__.py
|
|||
|
|
│ ├── conftest.py # pytest配置
|
|||
|
|
│ └── test_*.py # 测试文件
|
|||
|
|
├── migrations/ # 数据库迁移(自动生成)
|
|||
|
|
├── logs/ # 日志目录(自动生成)
|
|||
|
|
├── uploads/ # 上传文件目录(自动生成)
|
|||
|
|
├── docs/ # 文档目录
|
|||
|
|
│ ├── api/ # API文档
|
|||
|
|
│ ├── development/ # 开发文档
|
|||
|
|
│ └── deployment/ # 部署文档
|
|||
|
|
├── scripts/ # 工具脚本
|
|||
|
|
│ └── init_project.py # 项目初始化脚本
|
|||
|
|
├── .env.example # 环境变量模板
|
|||
|
|
├── .gitignore # Git忽略文件
|
|||
|
|
├── run_dev.py # 开发服务器启动脚本
|
|||
|
|
├── run_production.py # 生产环境启动脚本
|
|||
|
|
└── README.md # 项目说明(本文件)
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 使用说明
|
|||
|
|
|
|||
|
|
### 重命名项目
|
|||
|
|
|
|||
|
|
1. 将 `src/your_app/` 目录重命名为你的应用名称
|
|||
|
|
2. 更新 `src/your_app/__init__.py` 中的导入路径
|
|||
|
|
3. 更新 `run_dev.py` 和 `run_production.py` 中的导入路径
|
|||
|
|
4. 更新所有文档中的项目名称
|
|||
|
|
|
|||
|
|
### 配置环境
|
|||
|
|
|
|||
|
|
通过设置 `FLASK_ENV` 环境变量来选择配置:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 开发环境(默认)
|
|||
|
|
export FLASK_ENV=development
|
|||
|
|
|
|||
|
|
# 生产环境
|
|||
|
|
export FLASK_ENV=production
|
|||
|
|
|
|||
|
|
# 测试环境
|
|||
|
|
export FLASK_ENV=testing
|
|||
|
|
|
|||
|
|
# 本地环境
|
|||
|
|
export FLASK_ENV=local
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 添加新功能
|
|||
|
|
|
|||
|
|
1. **添加路由**:在 `src/your_app/routes/` 创建新的路由文件
|
|||
|
|
2. **添加模型**:在 `src/your_app/models/` 创建新的模型文件
|
|||
|
|
3. **添加服务**:在 `src/your_app/services/` 创建业务逻辑
|
|||
|
|
4. **添加工具**:在 `src/your_app/utils/` 创建工具函数
|
|||
|
|
|
|||
|
|
### 数据库迁移
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 创建迁移
|
|||
|
|
flask db migrate -m "描述信息"
|
|||
|
|
|
|||
|
|
# 应用迁移
|
|||
|
|
flask db upgrade
|
|||
|
|
|
|||
|
|
# 回滚迁移
|
|||
|
|
flask db downgrade
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 运行测试
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 安装测试依赖
|
|||
|
|
pip install -r requirements/test.txt
|
|||
|
|
|
|||
|
|
# 运行所有测试
|
|||
|
|
pytest
|
|||
|
|
|
|||
|
|
# 运行特定测试文件
|
|||
|
|
pytest tests/test_example.py
|
|||
|
|
|
|||
|
|
# 生成覆盖率报告
|
|||
|
|
pytest --cov=src tests/
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 依赖管理
|
|||
|
|
|
|||
|
|
依赖按用途分类管理:
|
|||
|
|
|
|||
|
|
- **base.txt**: 项目运行必需的基础依赖
|
|||
|
|
- **development.txt**: 开发工具(调试器、代码检查等)
|
|||
|
|
- **production.txt**: 生产环境依赖(WSGI服务器等)
|
|||
|
|
- **test.txt**: 测试框架和工具
|
|||
|
|
|
|||
|
|
安装方式:
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 开发环境
|
|||
|
|
pip install -r requirements/base.txt
|
|||
|
|
pip install -r requirements/development.txt
|
|||
|
|
|
|||
|
|
# 生产环境
|
|||
|
|
pip install -r requirements/base.txt
|
|||
|
|
pip install -r requirements/production.txt
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 环境变量说明
|
|||
|
|
|
|||
|
|
所有配置通过环境变量管理,详见 `.env.example` 文件。
|
|||
|
|
|
|||
|
|
**必需的环境变量:**
|
|||
|
|
- `SECRET_KEY`: Flask密钥
|
|||
|
|
- `DATABASE_URL`: 数据库连接URL
|
|||
|
|
- `FLASK_ENV`: 运行环境
|
|||
|
|
|
|||
|
|
## 部署
|
|||
|
|
|
|||
|
|
### 开发环境
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
python run_dev.py
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### 生产环境
|
|||
|
|
|
|||
|
|
```bash
|
|||
|
|
# 使用Gunicorn
|
|||
|
|
gunicorn -c gunicorn.conf.py "src.your_app:create_app()"
|
|||
|
|
|
|||
|
|
# 或使用uWSGI
|
|||
|
|
uwsgi --ini uwsgi.ini
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
## 贡献指南
|
|||
|
|
|
|||
|
|
1. Fork本项目
|
|||
|
|
2. 创建功能分支
|
|||
|
|
3. 提交更改
|
|||
|
|
4. 推送到分支
|
|||
|
|
5. 创建Pull Request
|
|||
|
|
|
|||
|
|
## 许可证
|
|||
|
|
|
|||
|
|
MIT License
|
|||
|
|
|
|||
|
|
## 更新日志
|
|||
|
|
|
|||
|
|
### v1.0.0 (2025-01-XX)
|
|||
|
|
- 初始版本
|
|||
|
|
- 基础项目结构
|
|||
|
|
- 多环境配置支持
|
|||
|
|
- 依赖分类管理
|
|||
|
|
|