Расположение установленных приложений Django
Я - опытный программист PHP, использующий Django в первый раз, и я думаю, что это невероятно!
У меня есть проект с множеством приложений, поэтому я хотел сгруппировать их в папку приложений.
Таким образом, структура проекта:
/project/
/project/apps/
/project/apps/app1/
/project/apps/app2
Затем в настройках Django я добавил следующее:
INSTALLED_APPS = (
'project.apps.app1',
'project.apps.app2',
)
Это не работает?
Любые идеи о том, как вы можете поместить все ваши приложения в отдельную папку, а не в корневой каталог проекта?
Большое спасибо.
Ответы
Ответ 1
Убедитесь, что файл __init__.py находится в каталоге ваших приложений, если он там не будет распознан как часть пакета.
Итак, каждая из папок здесь должна содержать файл "__init__.py". (пустое нормально).
/project/
/project/apps/
/project/apps/app1/
/project/apps/app2
Затем, пока ваша корневая папка "module" находится в вашем PYTHONPATH, вы сможете импортировать из своих приложений.
Здесь представлена документация о пути поиска python для удовольствия от чтения:
http://docs.python.org/install/index.html#modifying-python-s-search-path
И приятное простое объяснение того, что __init__.py файл для:
http://effbot.org/pyfaq/what-is-init-py-used-for.htm
Ответ 2
Пока ваши приложения находятся в вашем PYTHONPATH, все должно работать. Попробуйте установить эту переменную среды в папку, содержащую ваши приложения.
PYTHONPATH="/path/to/your/apps/dir/:$PYTHONPATH"
Ответ 3
В верхнем уровне urls.py
(также названном в settings.py
) должен быть доступен простой оператор import для получения ваших приложений.
Работает ли import project.apps.app1.urls
? Если нет, то ваш PYTHONPATH
настроен неправильно, или вы не установили свой проект в каталог Python site-packages
.
Я предлагаю использовать переменную среды PYTHONPATH
вместо установки в пакеты сайта. Приложения Django (для меня, во всяком случае) кажутся более удобными для управления, когда внешние сайты-пакеты.
Мы делаем следующее:
-
Проекты Django входят в /opt/project/
.
-
PYTHONPATH
включает /opt/project
.
-
Наш settings.py
использует apps.this
и apps.that
(обратите внимание, что часть project
этого имени является частью PYTHONPATH
, а не частью импорта.