Как сохранить все мои приложения django в определенной папке
У меня есть проект Django, скажем, "project1".
Типичная структура папок для приложений:
/project1/
/app1/
/app2/
...
__init__.py
manage.py
settings.py
urls.py
Что делать, если я хочу хранить все мои приложения в отдельной папке, например, приложения? Таким образом, структура должна выглядеть следующим образом:
/project/
apps/
app1/
app2/
...
__init__.py
manage.py
settings.py
urls.py
Ответы
Ответ 1
Вы можете добавить свою папку apps
в свой путь к python, вставив следующее в свой settings.py
:
import os
import sys
PROJECT_ROOT = os.path.dirname(__file__)
sys.path.insert(0, os.path.join(PROJECT_ROOT, 'apps'))
Затем вы можете использовать все приложения в этой папке так же, как и в своем корневом каталоге проекта!
Ответ 2
Вы можете сделать это очень легко, но вам нужно изменить settings.py
, чтобы выглядеть так:
INSTALLED_APPS = (
'apps.app1',
'apps.app2',
# ...
)
И ваш urls.py
выглядит следующим образом:
urlpatterns = patterns('',
(r'^app1/',include('apps.app1')),
(r'^app2/',include('apps.app2')),
)
.. и изменить любой import
, чтобы указать на расположение приложения
Ответ 3
Как насчет использования переменной BASE_DIR
, уже присутствующей в settings.py
.
Просто добавьте следующее:
import sys
sys.path.insert(0, os.path.join('BASE_DIR', 'apps'))
Надеюсь, что это поможет.
Ответ 4
Если вы используете virtualenv/virtualenvwrapper (и вы должны быть), вы можете использовать прилагаемую команду add2virtualenv
для увеличения вашего пути python:
mkdir apps
cd apps
pwd
[/path/to/apps/dir]
Скопируйте этот путь в буфер обмена, затем:
add2virtualenv /path/to/apps/dir
Ответ 5
Просто добавьте __init__.py
(всего 4 символа подчеркивания) в папку приложений. Теперь вы можете просто сделать
urlpatterns = [
path('polls/',include('apps.polls.urls')),
path('admin/', admin.site.urls)
]