我开始在 Django 示例项目中创建,第一个命令:
django-admin.py startproject 测试
给我:
- root
- test
- __init__.py
- settings.py
- urls.py
- wsgi.py
- manage.py
现在我创建第一个应用程序:
python manage.py startapp foo
它为我创建了文件夹root/foo
那么我应该如何理解我的 root/test
文件夹。该文件夹用于我的项目的全局配置,仅此而已吗? (类似于 Symfony 2 应用程序文件夹)
我很困惑,因为 Django 文档告诉我:
The inner mysite/ directory is the actual Python package for your project
但是 manage.py startapp foo
在 root 下创建应用程序,而不是在 root/test
下(相当于 mysite)
[编辑]
两个命令:
python manage.py startapp app
和:
django-admin.py startapp app
在项目根目录中为我提供应用程序,而不是在root/name_of_ generated_project
Django 1.4
[编辑]2
对不起,大家,是我的错,现在一切都好了。
[编辑]3
我想再次创建另一个项目:
django-admin.py startproject jobeet
我的初始结构与上面类似。
现在我想尝试创建应用程序(在 jobeet 文件夹内):
django-admin.py startapp 作业
我最终得到的是jobeet/jobs
而不是jobeet/jobeet/jobs
再次:/
所以在我的项目根目录中我有:
- jobeet
- jobs
- manage.py
另一个命令:
python manage.py startapp app
给了我相同的结果
最佳答案
假设您创建了一个新的 Django 项目 testproject
:
django-admin.py startproject testproject
这将创建一个包含以下最小文件集的新项目:
testproject/
├── __init__.py
├── manage.py
├── settings.py
└── urls.py
为您的第一个网站创建新应用程序mysite1
进入testproject
目录并运行:
python manage.py startapp mysite1
这会产生一个新目录 mysite1
对于mysite1
应用程序。
即只需这两个命令,您就会得到这个层次结构:
testproject/
├── __init__.py
├── manage.py
├── mysite1
│ ├── __init__.py
│ ├── models.py
│ ├── tests.py
│ └── views.py
├── settings.py
└── urls.py
请参阅django-admin.py
和/或 manage.py
单独命令 here .
在 Django 中,project
之间存在一对多关系。和一个app
。应用程序通常是一个单独的站点组件(例如 comments
、 ratings
),而项目是多个应用程序的组织,可以为许多不同的站点提供支持。这就是为什么您会得到 sites framework 。在实践中,一个项目通常服务于一个网站,但使用 Django sites
为了可重用性,您可以通过一个项目为应用程序提供任意数量的网站服务。
附注我认为创建一个名为 test
的项目这不是一个好的做法,因为 Django 单元测试位于 app
级别单元测试将进入名为 tests.py
的文件中或者在名为 tests
的文件夹中.
Django 1.4 更新
正如@zeantsoi在下面评论的那样,我的回答:
applies to Django 1.3 and prior. Per the docs, beginning in 1.4, base configuration files (including settings.py, urls.py, and wsgi.py) are abstracted into a subdirectory titled the same name as the project.
关于django - 了解目录结构建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10079747/