在我的Django应用程序中,我有很多代码,所以我将源文件拆分并放入子文件夹,如下所示:
myproject/
myapp/
management/
__init__.py
models/
__init__.py
common.py
users.py
matches.py
questionnaires/
demographics/
templates/
__init__.py
models.py
views.py
...
views/
__init__.py
abstract.py
concrete.py
现在我不知道该在INSTALLED_APPS
中放什么。是所有包含模型的文件夹吗?还是所有包含源的文件夹?如果我包括所有子文件夹,我是否也需要包括父文件夹?这应该匹配我的setup.py
的packages
参数中的内容吗?
注意:我知道我可以将其重构为多个应用程序,但(1(我希望所有这些功能都有一个通用的命名空间,因为它正在被重新分发;(2(无论如何,我都很想知道我的问题的答案。
放入包含models.py文件的目录,即您的"应用程序";。Django使用模型绑定到数据库,之后的一切都只是填充。
DJango的初创公司(非常精简(就是这样的
经理.py
# The important part
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "path.to.your.settings")
这将定义重要的部分,但让我们看看已安装的
设置.py
INSTALLED_APPS=(
'your.app.name'
)
基本上说,你会在那里找到我的models.py
和一些模型定义(它们不必定义,但models.py
需要存在(
你的/app/name/models.py
class SomeModel(models.Model):
#... model definition ...
pass
现在回到您的设置.py
你的来源可以在任何地方生活,因为DJango在一些非常特定的位置寻找某些东西,但这主要是在你的设置中配置的
ROOT_URLCONF = 'path.to.urls' # this is the pythonic module path to your `urls.py` file
在urls.py
文件中,您可以定义一个url,例如
url(r'^/some/url/def/$', 'some.other.module.handler'),
只要some.other.module
中的handler
返回一个有效的HttpResponse对象并且在PYTHONPATH上,那么类位于何处并不重要。
Django有一些关于管理命令的细节,它们必须位于你的应用程序目录中(与你的模型目录相同(,所以要定义这些命令(如果你的model.py
文件位于不同的位置(,你必须将它们放在你的数据目录中
例如,我有一个项目具有以下布局
/app
/data
/commands
some_command.py
models.py
/app
urls.py
settings.py
...other-source-files...
我的settings.py
简单地说,加载应用程序data
并指向app.url
获取url配置,从那时起,你的源代码住在哪里(在大多数情况下(都无关紧要。
我们这样做是为了将我们的数据库表命名为data_sometablename与app_sometablename](我不是这个选择的一部分,早在我加入之前就发生了(