Django项目结构咨询:共享SOMEAPI.py文件的存放位置
嘿,这个问题我在做多应用Django项目时也踩过坑!给你几个实用的方案,你可以根据项目规模和需求来选:
方案1:项目根目录建专用工具包
在和manage.py同级的项目根目录,新建一个比如utils或者core的文件夹,把SOMEAPI.py放进去。记得给这个文件夹加一个空的__init__.py文件,让Python把它识别成一个可导入的包。
之后在App A或App B里导入的话,假设你的项目名叫myproject,代码就像这样:
from myproject.utils.SOMEAPI import 你需要的类或函数名
优点:把所有通用共享的代码集中管理,项目结构清晰,后期维护起来很方便,适合这种跨应用调用的API封装。
方案2:创建一个共享应用
如果这个API代码以后可能要扩展(比如加相关模型、序列化器甚至管理后台页面),那直接新建一个专门的共享应用更合适,比如叫common或者shared。
操作步骤:
- 运行命令
python manage.py startapp common创建应用 - 把
SOMEAPI.py移到common文件夹下 - 在项目的
settings.py里,把common加入到INSTALLED_APPS列表中
导入的时候就很简洁:
from common.SOMEAPI import ...
优点:完全符合Django的应用化设计思路,能更好地和Django的其他功能(比如信号、ORM)结合,适合有长期扩展需求的共享代码。
方案3:直接放项目根目录(不推荐)
图省事的话,直接把SOMEAPI.py扔到manage.py同级的根目录,导入时写from SOMEAPI import ...就行。但这个方案我不建议用——根目录文件多了之后会特别乱,而且后续项目结构调整时很容易出导入错误,维护成本很高。
小提醒
不管选哪种方案,都可以先在python manage.py shell里测试导入语句,确认没有报错再写到业务代码里;如果这个API有第三方依赖,记得在项目的requirements.txt里注明哦!
内容的提问来源于stack exchange,提问作者Marc
相关产品推荐
相关产品推荐

