2012-04-09 68 views
2

我开始在Django示例项目创建,第一个命令:理解目录结构的建议

django-admin.py startproject test

给我:

- root 
    - test 
    - __init__.py 
    - settings.py 
    - urls.py 
    - wsgi.py 
    - manage.py 

现在我创建的第一个应用:

python manage.py startapp foo

它创建了f或我文件夹root/foo

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

我很困惑,因为Django文档讲述:

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

manage.py startapp foo创建应用程序在根下,不在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 jobs

和我结束了jobeet/jobs没有jobeet/jobeet/jobs

再次:我的项目的根内/

所以我有:

另一个命令:

python manage.py startapp app 

给了我同样的结果

回答

6

所以我们说你创建一个新的Django项目testproject

django-admin.py startproject命令testproject

这与以下最低组文件创建一个新项目:

testproject/ 
├── __init__.py 
├── manage.py 
├── settings.py 
└── urls.py 

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

蟒蛇manage.py的startApp mysite1

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

I.e.只有这两个命令,你会到达这个层次:

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中有projectapp之间的一对多关系。应用程序通常是一个单独的网站组件(例如comments,ratings),而项目是由多个应用程序组成的组织,可以为许多不同的站点供电。这就是为什么你得到sites framework。在实践中,一个项目通常服务于一个网站,但是对于一个项目,使用Django sites应用程序,您可以根据您的喜好使用多个网站,以实现可重用性。

P.S.我想创建一个简称test是不是一个好的做法,因为与app级单元测试Django的单元测试将进入一个名为tests.py文件或叫做tests文件夹内的项目。 Django的1.4

UPDATE作为@zeantsoi下面有评论,我的回答:

应用于Django的1.3和前。 Per the docs,在1.4开始,立足 配置文件(包括settings.py,urls.py,和wsgi.py)的 抽象为标题相同的名称作为项目的子目录。

+0

名称测试就是一个例子,真实姓名不同。我很抱歉。 – drupality 2012-04-09 21:23:25

+0

@drupality没问题。希望你找到我的答案有帮助。 – 2012-04-09 21:25:16

+0

我强烈毫不犹豫地指一个应用程序为“个人网站”大多数网站将组成一个以上的应用程序,并经常项目是一个单一的网站 – John 2012-04-09 21:58:10

1

manage.py不提供startproject命令的命令 - 这通常是一个Django的管理命令。我会检查您正在执行的manage.py,理想情况下,使用您创建的项目目录中的manage.py。

+0

我使用Django 1.4,我为我的项目的根,命令里面:蟒蛇manage.py(适当manage.py)的startApp应用程序,在根其他应用创建的,所以它是默认的行为:/ – drupality 2012-04-09 21:08:16

2

“测试”是您项目的最高级别。我从来没有使用交响乐2,所以我不能评论这一点,但似乎你有把握。那里居住的文件基本上都是全局配置文件。在你的“测试”文件夹内,你还应该有一个或多个应用程序文件夹。在这些应用程序文件夹中生活的应用程序特定的模型,视图,网址等

看起来你有一些错误你的foo应用程序应该住在root/test/foo不是root/foo。

现在在我的项目,我往往有东西像的virtualenv夹住在根目录,但明确不得在该水平有应用程序(它只是将无法正常工作)

+0

是它工作,可能它是Django 1.4的默认行为:/ – drupality 2012-04-09 21:09:14

+0

所有startproject都会创建一个由您传递的参数命名的目录,并放入一些您需要的起始文件。所有startapp都会在当前的目录中创建一个目录,并将其中大部分应用程序将使用的文件放入目录。如果在运行命令之间没有cd到你的项目中,你将会创建错误的结构。在startapp和startproject中确实没有任何魔法,它只是创建一个基本结构 – John 2012-04-09 22:44:53