Как сохранить все мои приложения 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')),    
)

.. и изменить любой imports, чтобы указать на местоположения приложение


как вы используете 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)
]