You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
1.9 KiB
Markdown
93 lines
1.9 KiB
Markdown
# iTi-Flask
|
|
|
|
iTi-Flask 是基于 APIFlask / Flask 的后端框架基座。
|
|
|
|
它只提供应用创建、配置、扩展、模块协议、服务调用、任务运行、迁移集成和基础工具。
|
|
它不是业务系统。
|
|
系统业务能力不在框架内。
|
|
需要系统业务时,业务项目使用独立包 `iTi-System`。
|
|
|
|
## 技术栈
|
|
|
|
- Python 3.11+
|
|
- APIFlask / Flask
|
|
- SQLAlchemy / Flask-Migrate
|
|
- Flask-JWT-Extended
|
|
- Flask-Limiter
|
|
- Flask-Caching
|
|
- Marshmallow
|
|
- httpx
|
|
- uv
|
|
- Copier
|
|
|
|
## 安装
|
|
|
|
框架本地开发:
|
|
|
|
```bash
|
|
uv sync --extra dev
|
|
```
|
|
|
|
业务项目通过 Git tag 依赖框架:
|
|
|
|
```toml
|
|
dependencies = [
|
|
"iti-flask @ git+ssh://git@example.com/iTi-Flask.git@v0.1.1",
|
|
]
|
|
```
|
|
|
|
可选依赖按需启用:
|
|
|
|
```bash
|
|
uv sync --extra dev --extra mysql --extra image --extra excel
|
|
```
|
|
|
|
## 应用工厂
|
|
|
|
业务项目使用 `iti.applications.create_app()` 创建 Flask 应用:
|
|
|
|
```python
|
|
from iti.applications import create_app
|
|
|
|
from config import config
|
|
from my_app.models import import_models
|
|
from my_app.modules.example.module import ExampleModule
|
|
|
|
app = create_app(
|
|
config_mapping=config,
|
|
model_imports=[import_models],
|
|
modules=[ExampleModule()],
|
|
)
|
|
```
|
|
|
|
`config_mapping` 用于传入业务项目自己的配置类。
|
|
`model_imports` 用于让 Alembic 自动发现业务模型。
|
|
`modules` 用于注册进程内业务模块。
|
|
|
|
## 业务项目生成
|
|
|
|
```bash
|
|
uvx copier copy ./copier-template ../my-business-app
|
|
```
|
|
|
|
生成后进入业务项目:
|
|
|
|
```bash
|
|
cd ../my-business-app
|
|
uv sync --extra dev
|
|
uv run python -m flask --app app.py db upgrade
|
|
uv run python -m flask --app app.py run --debug
|
|
```
|
|
|
|
## 文档
|
|
|
|
- [文档索引](docs/README.md)
|
|
- [架构](docs/ARCHITECTURE.md)
|
|
- [配置](docs/CONFIGURATION.md)
|
|
- [模块协议](docs/MODULES.md)
|
|
- [服务客户端](docs/SERVICE_CLIENT.md)
|
|
- [任务运行器](docs/TASKS.md)
|
|
- [数据库迁移](docs/MIGRATIONS.md)
|
|
- [种子数据](docs/SEEDS.md)
|
|
- [Copier 模板](docs/COPIER_TEMPLATE.md)
|