2012-04-09 152 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