Как сохранить все мои приложения 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
5 ответов
вы можете добавить свои apps
папка к вашему пути python, вставив следующее в ваш settings.py
:
import os
import sys
PROJECT_ROOT = os.path.dirname(__file__)
sys.path.insert(0, os.path.join(PROJECT_ROOT, 'apps'))
тогда вы можете использовать все приложения в этой папке так же, как они были в вашем корне проекта!
вы можете сделать это очень легко, но вам нужно изменить settings.py
выглядит так:
INSTALLED_APPS = (
'apps.app1',
'apps.app2',
# ...
)
и свой urls.py
выглядит так:
urlpatterns = patterns('',
(r'^app1/',include('apps.app1')),
(r'^app2/',include('apps.app2')),
)
.. и изменить любой import
s, чтобы указать на местоположения приложение
как вы используете BASE_DIR
переменная уже присутствует в settings.py
.
добавьте следующую строку:
import sys
sys.path.insert(0, os.path.join('BASE_DIR', 'apps'))
надеюсь, что это помогает.
Если вы используете virtualenv / virtualenvwrapper (и вы должны быть), вы можете использовать включенный add2virtualenv
команда для увеличения пути python:
mkdir apps
cd apps
pwd
[/path/to/apps/dir]
скопировать путь в буфер обмена, затем:
add2virtualenv /path/to/apps/dir
просто добавить __init__.py
(всего 4 подчеркивания) в папке "приложения". Теперь вы можете просто сделать
urlpatterns = [
path('polls/',include('apps.polls.urls')),
path('admin/', admin.site.urls)
]