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)
|
||
- 初始版本
|
||
- 基础项目结构
|
||
- 多环境配置支持
|
||
- 依赖分类管理
|
||
|