Django 1.4 Новая структура папок проекта заставляет префиксы проекта? - PullRequest
23 голосов
/ 09 февраля 2012

Используя 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, поскольку это нарушает возможность повторного использования?

Ответы [ 2 ]

54 голосов
/ 08 апреля 2012

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

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

16 голосов
/ 09 февраля 2012

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

ROOT_URLCONF = 'myproject.urls'

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

from django.conf import settings
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...