对于小型API,我有以下结构(相关部分):
app
|--main.py
|-models
|--base.py
|--ModelUser.py
|--ModelCompany.py
|--ModelUser.py
|-schemas
|--SchemaUser.py
|--SchemaCompany.py
|--SchemaReview.py
|-routes
|--auth_router.py
|--companies_router.py
|_users_router.py
|-utils
|--crud_company.py
|--crud_review.py
|--crud_user.py
在大多数情况下,它能够工作并保持可接受的关注点分离程度(即,UserModel包含SQLAlchemy用户模型,SchemaCompany包含Pydantic公司模型,等等)。问题是,名称空间变得有点过于杂乱和冗余,因为每个类或函数调用都需要我键入,例如,SchemaReview.Review
或ModelUser.User
或crud_company.get_companies
(你知道了)
我更希望有类似model.User
、schema.Company
和crud.get_reviews
的东西,但为了实现这一点,我必须将每个模型放在一个model.py
文件中,将每个模式放在一个schema.py
文件中,等等,这正是我试图通过模块化代码来避免的
那么,这里最好的方法是什么?我曾考虑过为导入添加别名,但这可能会导致过程中出现不一致的情况,我不想对此进行讨论。因此,我认为理想的方法来自目录/文件名约定,这将迫使我保持一致性
所有的想法都会来的。谢谢
查看一下FastAPI的FastAPI-Postgres App创建者模板
我见过这样一种惯例:从不在
PascalCase
中命名python文件,只使用snake_case
实现
model.User
的方法是在相关文件的__init__.py
中导入相关类让我们说
models.__init__.py
然后您可以
import models
并在整个代码中使用models.User
。如果使用PascalCase作为文件名,这可能会产生命名冲突,所以这也是snake_案例更实用的原因您还可以在github的fastapi repository中将问题作为问题发布
相关问题 更多 >
编程相关推荐