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)
给了我相同的结果
所以假设您创建了一个新的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
这将导致一个新的目录mysite1的mysite1应用程序.
即只有这两个命令,您将到达此层次结构:
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)被抽象到一个名为与项目同名的子目录中.