框架概述
ThinkPython 是一个基于 FastAPI 的企业级 Python Web 框架。设计哲学是让开发者像使用 ThinkPHP 一样简单,同时享受 FastAPI 的高性能(异步、自动 API 文档)。
💡 为什么选择 ThinkPython?
如果你用过 ThinkPHP、Spring Boot,你会感觉非常熟悉 —— 零学习成本,一条命令生成 CRUD 三层代码,专注业务逻辑。
零学习成本
如果你用过 ThinkPHP、Spring Boot,你会感觉非常熟悉
快速开发
一条命令生成 CRUD 三层代码,专注业务逻辑
生产就绪
内置日志、异常处理、缓存、JWT 认证等企业级功能
灵活扩展
支持多种数据库、多种缓存,小项目大项目都能胜任
快速开始
1. 安装
# GitHub
git clone https://github.com/hongxinge/ThinkPython.git
cd ThinkPython
# 或 Gitee(国内镜像,更快)
git clone https://gitee.com/hongxinge/think-python.git
cd think-python
pip install -r requirements.txt
2. 启动
python think.py run
🎉 零配置启动
默认使用 SQLite + 内存缓存,无需修改任何配置!
3. 访问
| 地址 | 说明 |
|---|---|
| http://localhost:8000/docs | 📘 API 文档(Swagger UI) |
| http://localhost:8000/health | 💚 健康检查 |
功能特性
| 功能 | 说明 |
|---|---|
| 🔄 单/多模块切换 | 配置自由切换,小项目用单模块,大项目用多模块 |
| 🗄️ 多数据库支持 | MySQL / PostgreSQL / SQLite / MSSQL 一键配置 |
| 💾 多缓存支持 | Redis / Memory / Memcached 灵活选择 |
| 🛣️ 自动路由注册 | 控制器自动发现,无需手动注册 |
| 🏗️ 三层架构 | Controller / Service / Model 清晰分层 |
| 🔐 智能认证 | 全局中间件 + 白名单跳过,配置一次即可 |
| 🖥️ CLI 工具 | 类似 ThinkPHP 的 think 命令,快速生成代码 |
| 📦 Excel 工具 | 内置 Excel 导入导出,支持样式、自动列宽 |
| 📁 文件工具 | 内置文件上传下载,支持格式验证、UUID 命名 |
项目结构
ThinkPython/
├── app/ # 应用目录(你主要在这里写代码)
│ ├── common/ # 公共模块(跨模块共享代码)
│ ├── single/ # 单模块模式(默认)
│ ├── admin/ # 后台管理模块(多模块)
│ └── api/ # API 模块(多模块)
├── config/ # 配置目录
├── core/ # 核心框架层
├── helpers/ # 助手函数
├── router/ # 路由管理(自动注册)
├── middleware/ # 中间件
├── utils/ # 工具类(Excel、文件)
├── uploads/ # 上传文件目录
├── think.py # CLI 命令行工具
├── main.py # 应用入口
└── requirements.txt # 依赖包列表
配置说明
所有配置通过 .env 文件管理(从 .env.example 复制):
核心配置
| 变量 | 说明 | 默认值 |
|---|---|---|
APP_DEBUG | 调试模式 | True |
MODULE_MODE | 模块模式 | single / multi |
ENABLED_MODULES | 启用模块 | *(自动发现) |
数据库配置
| 变量 | 说明 | 默认值 |
|---|---|---|
DB_TYPE | 数据库类型 | sqlite |
DB_HOST / DB_PORT / DB_NAME | 数据库连接 | 按需配置 |
DB_USER / DB_PASSWORD | 数据库账号 | 按需配置 |
缓存配置
| 变量 | 说明 | 默认值 |
|---|---|---|
CACHE_TYPE | 缓存类型 | memory |
REDIS_HOST / REDIS_PORT | Redis 连接 | 按需配置 |
JWT 认证
⚠️ 安全提醒
生产环境务必修改 JWT_SECRET 为强密钥!
| 变量 | 说明 | 默认值 |
|---|---|---|
JWT_SECRET | JWT 密钥 | your-secret-key... |
JWT_EXPIRE_HOURS | Token 过期时间 | 24 |
AUTH_ENABLED | 是否启用认证中间件 | true |
双 Token 机制
| 变量 | 说明 | 默认值 |
|---|---|---|
JWT_ACCESS_TOKEN_EXPIRE_HOURS | Access Token 过期时间 | 2 |
JWT_REFRESH_TOKEN_EXPIRE_DAYS | Refresh Token 过期时间 | 7 |
JWT_REFRESH_TOKEN_ROTATE | Refresh Token 轮换机制 | true |
API 限流
| 变量 | 说明 | 默认值 |
|---|---|---|
RATE_LIMIT_ENABLED | 是否启用限流 | false |
RATE_LIMIT_BACKEND | 限流后端 | memory |
RATE_LIMIT_IP_REQUESTS | IP 每分钟最大请求数 | 100 |
CLI 工具速查
python think.py run # 启动服务器
python think.py make-crud user # 根据数据库表结构生成 CRUD 三层代码
python think.py make-controller User # 创建控制器
python think.py make-model User # 创建数据模型
python think.py make-service User # 创建服务层
python think.py make-module order # 创建新模块
python think.py db-migrate # 数据库迁移
python think.py list-routes # 列出所有路由
💡 make-crud
配置好数据库后,一条命令 python think.py make-crud user 即可根据 user 表结构自动生成 Model、Controller、Service 三层完整代码,包含字段类型、注释、Pydantic 验证等。
统一响应格式
所有接口返回统一的 JSON 格式:
{
"code": 200,
"message": "success",
"data": {}
}
| 方法 | 说明 |
|---|---|
self.success(data, message) | 成功响应 |
self.error(message, code) | 错误响应 |
self.paginate(items, total, page, page_size) | 分页响应 |
文档中心
| 文档 | 说明 |
|---|---|
| 5分钟创建第一个 API | 从零开始,创建完整的 CRUD 接口 |
| 数据库配置 | MySQL / PostgreSQL / MSSQL 配置教程 |
| 缓存使用 | Redis / Memcached 配置教程 |
| 多模块模式 | 项目拆分与模块管理 |
| 公共模块 | 跨模块共享代码的最佳实践 |
| 认证机制 | JWT 认证、免验证路由配置 |
| Excel 工具 | Excel 导入导出使用指南 |
| 文件工具 | 文件上传下载使用指南 |
部署方式
| 部署方式 | 适用场景 | 说明 |
|---|---|---|
| Uvicorn | 小型项目 | uvicorn main:app --host 0.0.0.0 --port 8000 |
| Gunicorn | 中型项目 | gunicorn -c deploy/gunicorn.conf.py main:app -k uvicorn.workers.UvicornWorker |
| Docker Compose | 生产环境 | cd deploy && docker-compose up -d |
常见问题
Q: 如何切换多模块模式?
MODULE_MODE=multi
ENABLED_MODULES=admin,api
Q: SQLite 数据库文件在哪?
默认在 ./data/database.db,会自动创建。
Q: 如何免验证登录、注册等接口?
在控制器中配置白名单:
class AuthController(BaseController):
SKIP_AUTH_ROUTES = ["POST /auth/login", "POST /auth/register"]
Q: 如何查看执行的 SQL 语句?
DB_ECHO=True
仓库地址
| 平台 | 地址 |
|---|---|
| GitHub | https://github.com/hongxinge/ThinkPython |
| Gitee(国内镜像) | https://gitee.com/hongxinge/think-python |