我想解决的问题:
可以轻松复制、移动、存档、删除整个项目或估算磁盘
空间使用。
应用程序、存储库或 virtualenv,同时保留单个副本
我不想克隆的其他文件。
选择了一个目录。
最佳答案
Harsha 已经提到了我的 project generator,但我认为这对 future 的读者解释它背后的想法会有所帮助。
如果你打算为你的前端服务,比如 yarn 或 npm 。您不必担心它们之间的结构。使用 axios 或 Javascript 的 fetch 之类的东西,您可以从任何地方轻松地与后端对话。
在构建后端时,如果你想用 Jinja 渲染模板,你可以拥有一些接近 MVC 模式的东西。
your_project
├── __init__.py
├── main.py
├── core
│ ├── models
│ │ ├── database.py
│ │ └── __init__.py
│ ├── schemas
│ │ ├── __init__.py
│ │ └── schema.py
│ └── settings.py
├── tests
│ ├── __init__.py
│ └── v1
│ ├── __init__.py
│ └── test_v1.py
└── v1
├── api.py
├── endpoints
│ ├── endpoint.py
│ └── __init__.py
└── __init__.py
通过在任何地方使用 __init__
,我们可以从整个应用程序访问变量,就像 Django 一样。让我们将文件夹分成几部分:
楷模
它适用于您的数据库模型,通过这样做,您可以从 v1 和 v2 导入相同的数据库 session 或对象。
模式
Schemas 是您的 Pydantic 模型,我们称其为 schemas,因为它实际上用于创建 OpenAPI 模式,因为 FastAPI 基于 OpenAPI 规范,我们在任何地方都使用模式,从 Swagger 生成到端点的预期请求正文。
设置.py
它适用于 Pydantic's Settings Management,非常有用,您可以使用相同的变量而无需重新声明它,看看它对您有何用处,请查看我们的 Settings and Environment Variables 文档
观看次数
如果您要使用 Jinja 呈现前端,则这是可选的,您可以使用类似于 MVC 模式的内容
如果你想添加 View ,它看起来像这样。
测试
最好将测试放在后端文件夹中。
蜜蜂
由 APIRouter 独立创建它们,而不是将所有 API 收集在一个文件中。
笔记
您可以对所有导入使用绝对导入,因为我们在任何地方都使用
__init__
,请参阅 Python's packaging 文档。因此,假设您尝试从 v2 导入 ojit_strong v1 的 endpoint.py ,您可以简单地执行
from my_project.v1.endpoints.endpoint import something
关于python - 构建 FastAPI 项目的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64943693/