Новая структура папок проекта 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, поскольку он прерывает повторное использование?
Ответы
Ответ 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
...
Итак, первый лучше для приложений, которые, по вашему мнению, могут повторно использоваться в других проектах, а последние лучше подходят для приложений, тесно связанных с другими частями вашего проекта.