2012-02-09 94 views
23

使用django 1.4並看到當您使用startproject時,它現在會在您的項目中創建一個具有相同名稱的文件夾。Django 1.4新項目文件夾結構強制項目前綴?

-myproject/ 
      manage.py 
      myproject/ 
        settings.py 
        urls.py 

​​

此前對我的網址我可以輸入

ROOT_URLCONF = 'urls' 

但這不再工作。我現在應該用項目名稱加前綴嗎?即

ROOT_URLCONF = 'myproject.urls' 

- 在我urls.py我會導入設置,但現在我有from myproject import settings前綴它。

我認爲使用項目名稱的變量前綴是違反django標準,因爲它打破了可重用性?

回答

16

是的,前綴ROOT_URLCONF與您的項目名稱:

ROOT_URLCONF = 'myproject.urls' 

你不應該導入設置直接反正(見Using settings in Python code)。相反,請使用以下內容,這適用於舊的和新的項目佈局。

from django.conf import settings 
54

我只想補充一點,它迫使你當你accces你的主要myproject.urls使用前綴,但它不會強迫你爲你的應用程序兩種方式。您可以選擇存儲的應用程序要麼在頂層文件夾:

myproject 
|-- manage.py 
|-- myproject 
| |-- __init__.py 
| |-- settings.py 
| |-- urls.py 
| `-- wsgi.py 
`-- polls 
    |-- __init__.py 
    |-- models.py 
    |-- tests.py 
    `-- views.py 

這是默認的,當你使用python manage.py startapp polls 在這種情況下,你會使用from polls.models import Whatever

或者,您可以:

mkdir myproject/polls 
python manage.py startapp polls myproject/polls 

,你會得到這樣的:

myproject 
|-- manage.py 
`-- myproject 
    |-- __init__.py 
    |-- polls 
    | |-- __init__.py 
    | |-- models.py 
    | |-- tests.py 
    | `-- views.py 
    |-- settings.py 
    |-- urls.py 
    `-- wsgi.py 

在這種情況下,您必須登錄from myproject.polls.models import Whatever ...

因此,前者對於您認爲可以在其他項目中重複使用的應用程序更好,而後者對於與應用程序緊密結合的應用程序更好您項目的其他部分。

+0

偉大的闡述。謝謝你。 – Kiwi 2012-04-26 15:24:51