[!CAUTION] 2024-3-22 (公告)
主分支已完成 app 架构重构,请格外注意 sync fork 操作,以免造成不可挽回的损失!
我们保留并锁定了原始分支(legacy-single-app-pydantic-v2),您可以在分支选择器中找到它
简体中文 | English
基于 FastAPI 框架的前后端分离中后台解决方案,遵循伪三层架构设计, 支持 python3.10 及以上版本
它的目的是让你可以直接用它作为你新项目的基础架构,本仓库作为模板库公开,任何人或企业均可免费使用
🔥持续更新维护中🔥
mvc 架构作为常规设计模式,在 python web 中也很常见,但是三层架构更令人着迷
在 python web 开发中,三层架构的概念并没有通用标准,所以这里我们称之为伪三层架构
但请注意,我们并没有传统的多应用程序结构(django、springBoot...),如果您不喜欢这种模式,可以使用模板对其进行随意改造!
工作流程 | java | fastapi_best_architecture |
---|---|---|
视图 | controller | api |
数据传输 | dto | schema |
业务逻辑 | service + impl | service |
数据访问 | dao / mapper | crud |
模型 | model / entity | model |
你可以在 fastapi_best_architecture_ui 中查看部分预览截图
幸运的是,我们现在有一个演示站点: FBA UI
账号 / 密码: admin / 123456
进入 backend
目录
cd backend
安装依赖包
pip install -r requirements.txt
创建一个数据库 fba
,选择 utf8mb4 编码
安装并启动 Redis
在 backend
目录下创建 .env
文件
touch .env
cp .env.example .env
按需修改配置文件 core/conf.py
和 .env
数据库迁移 alembic
# 生成迁移文件
alembic revision --autogenerate
# 执行迁移
alembic upgrade head
启动 celery worker, beat 和 flower
celery -A app.task.celery worker -l info
# 定时任务(可选)
celery -A app.task.celery beat -l info
# web 监控(可选)
celery -A app.task.celery flower --port=8555 --basic-auth=admin:123456
初始化测试数据(可选)
启动 fastapi 服务
# 帮助
fastapi --help
# 开发模式
fastapi dev main.py
跳转 fastapi_best_architecture_ui 查看详情
[!WARNING]
默认端口冲突:8000,3306,6379,5672
建议在部署前关闭本地服务:mysql,redis,rabbitmq...
进入 deploy/backend/docker-compose
目录,创建环境变量文件.env
cd deploy/backend/docker-compose
touch .env.server ../../../backend/.env
cp .env.server ../../../backend/.env
按需修改配置文件 backend/core/conf.py
和 .env
执行一键启动命令
docker-compose up -d --build
等待命令执行完成
使用 backend/sql/init_test_data.sql
文件初始化测试数据
(仅供参考)
通过 pytest
执行单元测试
创建测试数据库 fba_test
,选择 utf8mb4 编码
使用 backend/sql/create_tables.sql
文件创建数据库表
使用 backend/sql/init_pytest_data.sql
文件初始化测试数据
进入 backend
目录,执行测试命令
cd backend/
pytest -vs --disable-warnings
如果此项目能够帮助到你,你可以赞助作者一些咖啡豆表示鼓励: Sponsor
本项目由 MIT 许可证的条款进行许可
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。