Подтвердить что ты не робот

Новая структура папок проекта Django 1.4 заставляет проектные префиксы?

Используя django 1.4 и увидели, что при использовании startproject теперь он создает папку в вашем проекте с тем же именем.

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

Записанные здесь изменения

Раньше для моих URL-адресов я мог вводить

ROOT_URLCONF = 'urls'

Но это уже не работает. Должен ли я теперь префикс этого имени проекта? то есть.

ROOT_URLCONF = 'myproject.urls'

- В моем urls.py я бы импортировал настройки, но теперь я должен префикс его с помощью from myproject import settings.

Я думал, что префиксные переменные с именем проекта были против стандартов django, поскольку он прерывает повторное использование?

4b9b3361

Ответ 1

Да, префикс ROOT_URLCONF с вашим именем проекта:

ROOT_URLCONF = 'myproject.urls'

Вам не следует в любом случае импортировать настройки (см. Использование настроек в коде Python). Вместо этого используйте следующее, которое работает как для старых, так и для новых макетов проекта.

from django.conf import settings

Ответ 2

Я просто добавлю, что он заставляет вас использовать префиксы, когда вы узнаете свой основной 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...

Итак, первый лучше для приложений, которые, по вашему мнению, могут повторно использоваться в других проектах, а последние лучше подходят для приложений, тесно связанных с другими частями вашего проекта.