我试图从一开始就为开发我的django项目设置尽可能好的设置,但是我很难让所有的东西都在目录结构中很好地发挥作用。我已经设置了virtualenv(本例中为env),以便可以为每个django项目部署一个干净的空python环境。
基本结构如下:/env/
/bin
/db
/downloads
/lib
/static
/project/
/__init__.py
/settings.py
/manage.py
/appsfolder/
/appname/
/__init__.py
/models/
/__init__.py
/somemodel.py
/urls/
/__init__.py
/someurl.py
/views/
/__init__.py
/someview.py
这是基本布局;我希望每个项目都有一个用于应用程序的目录,并且在每个应用程序中都有一个用于模型、视图和url的单独文件夹。
我遇到的问题是python路径以及如何处理模块。
在应用程序中,我不想在导入模型时引用项目,即我应该使用:import appname.models.modelname
不是:import projectname.models.modelname
帮助重用
在models目录中,我有以下init.pyfrom model1 import ModelName1
from model2 import ModelName2
from model3 import ModelName3
__all__ = ['ModelName1', 'ModelName2', 'ModelName3']
但是当我尝试使用一个单独的url文件(in/appname/url/url file.py)并导入如下模型时:from appname.models.somemodel import ModelName
我得到一个“模块未找到”错误。
当:from appsfolder.appname.models.somemodel import ModelName
工作正常
我认为这是因为应用程序不是直接在python路径上,而是在一个名为appsfolder的子文件夹中,但是我不确定如何着手解决这个问题,同时保持所有东西的可重用性和相对性。
我知道一个解决方案是将所有应用程序直接放在网站包下的python路径上,但是我并不喜欢这个想法,因为我认为如果您使用virtualenv的