了解目录结构建议

Cod*_*ium 3 django configuration structure directory-structure

我开始在Django示例项目中创建第一个命令:

django-admin.py startproject test

给我:

- root
  - test
    - __init__.py 
    - settings.py 
    - urls.py 
    - wsgi.py 
    - manage.py
Run Code Online (Sandbox Code Playgroud)

现在我创建第一个应用程序

python manage.py startapp foo

它为我创建了文件夹 root/foo

所以我应该如何理解我的root/test文件夹.这个文件夹是否为我的项目的全局配置而已?(类似于Symfony 2 app文件夹)

我很困惑因为Django docs告诉我:

内部mysite /目录是项目的实际Python包

但是manage.py startapp foo在root下创建应用程序,而不是root/test(mysite等效)

[编辑]

两个命令:

python manage.py startapp app
Run Code Online (Sandbox Code Playgroud)

和:

django-admin.py startapp app
Run Code Online (Sandbox Code Playgroud)

在项目根目录中给我app,而不是在 root/name_of_generated_project

Django 1.4

[编辑] 2

对不起,伙计们,我的错,现在一切都好.

[编辑] 3

我想再次创建另一个项目:

django-admin.py startproject jobeet

我的初始结构与上面类似.

现在我想尝试创建app(在jobeet文件夹中):

django-admin.py startapp jobs

而我最终jobeet/jobs没有jobeet/jobeet/jobs

再次:/

所以在我的项目根目录中我有:

- jobeet
- jobs
- manage.py
Run Code Online (Sandbox Code Playgroud)

另一个命令:

python manage.py startapp app
Run Code Online (Sandbox Code Playgroud)

给了我相同的结果

Jos*_*mit 6

所以假设您创建了一个新的Django项目testproject:

django-admin.py startproject testproject

这将创建一个包含以下最小文件集的新项目:

testproject/
??? __init__.py
??? manage.py
??? settings.py
??? urls.py
Run Code Online (Sandbox Code Playgroud)

要为您的第一个站点创建一个新应用程序,mysite1请进入testproject目录并运行:

python manage.py startapp mysite1

这将导致一个新的目录mysite1mysite1应用程序.

即只有这两个命令,您将到达此层次结构:

testproject/
??? __init__.py
??? manage.py
??? mysite1
?   ??? __init__.py
?   ??? models.py
?   ??? tests.py
?   ??? views.py
??? settings.py
??? urls.py
Run Code Online (Sandbox Code Playgroud)

请参阅此处django-admin.py和/或manage.py单个命令.

在Django中,a 和an 之间存在一对多的关系.一个应用程序通常是一个单独的网站组件(例如,),而一个项目的几个应用程序的组织,可以驱动许多不同的网站.这就是你获得网站框架的原因.在实践中,一个项目通常服务于一个网站,但是使用带有一个项目的Django 应用程序,您可以根据需要提供多个网站,以获得可重用性.projectappcommentsratingssites

PS我认为创建一个简单调用的项目test并不是一个好习惯,因为在单元app级测试中使用Django 单元测试会进入一个名为tests.py或调用的文件夹中tests.

Django 1.4的更新

正如@zeantsoi在下面评论过,我的答案是:

适用于Django 1.3和之前的版本.根据文档,从1.4开始,基本配置文件(包括settings.py,urls.py和wsgi.py)被抽象到一个名为与项目同名的子目录中.