我希望从一开始就为我的 Django 项目设置最佳环境,并且在目录结构中遇到了一些问题。我已经建立了 virtualenv(在此示例中为 env),以便为每个 Django 项目部署一个干净的空 Python 环境。
基本结构如下:
/env/
/bin
/db <--- Django DB
/downloads
/lib
/static <--- Where css/imgs/js etc is served from
/project/ <--- Django root
/__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
为了帮助重复使用
在模型目录中,我有以下init.py文件。
from model1 import ModelName1
from model2 import ModelName2
from model3 import ModelName3
__all__ = ['ModelName1', 'ModelName2', 'ModelName3']
但是当我尝试使用一个单独的url文件(在/appname/urls/urlfile.py中)并像下面这样导入模型时:
from appname.models.somemodel import ModelName
I get a "module not found" error.
while:
from appsfolder.appname.models.somemodel import ModelName
运行良好
我猜这是因为应用程序不直接在Python路径上,而是在名为appsfolder的子文件夹中,但我不确定如何修复它,同时保持所有内容可重用和相对。
我知道一个解决方案是将所有应用程序直接放在site-packages下的Python路径下,但我不太喜欢这个想法,因为如果您正在使用virtualenv,则认为应用程序应该在项目中。
appviews
文件夹非常有用。他们为templates
有一个,为什么不为视图也有一个呢? - yurisich