-
Кто как группирует? Мне сразу не понравилось то что в корневой папке будет свалка.
Пока придумал такую штуку.
Допустим мы хотим создать 2 группы: group1 и group2. Структура папкок будет такой
Теперь в settings py импортируем group1 и group2 в path:project
group1
app1
app2
group2
app3
app4
settings.py
Теперь их можно подключить так, как если бы они лежали в корневой папке проекта:...
import sys, os
setting_dir = os.path.dirname(__file__)
sys.path.append( os.path.join(setting_dir, 'group1') )
sys.path.append( os.path.join(setting_dir, 'group2') )
...
Какие есть недостатки у данного метода?INSTALLED_APPS = (
...
'app1',
'app2',
'app3',
'app4',
) -
Обычно вообще не рекомендуют держать приложения в папке проекта: нечего им там делать. Проект должен содержать небольшое количество файлов (настройки, urlconf, папку с шаблонами), которые обслуживают именно конкретный instance проекта. А приложения — это библиотеки. Их стоит организовать в любом удобном месте диска в любой удобной иерархии. Например:
project/ settings.py urls.py templates/ apps/ core/ utils/ api/ forum/ blog/Директория apps должна быть в PYTHONPATH, а отдельные приложения подключаются как любые питоновые модули:
INSTALLED_APPS = [ 'core.utils', 'core.api', 'forum', 'blog', ]А вообще, вопрос давно и хорошо изложен например у Джеймса Бенетта: Django tips: laying out an application
-
При попытке подключить
INSTALLED_APPS = [
'test.account',
]
Выдается ошибка:
AttributeError: 'module' object has no attribute 'account'
При том, что выше указано:
PROJECT_ROOT = os.path.dirname(__file__)
sys.path.insert(0, os.path.join(PROJECT_ROOT, 'apps'))
И структура такая:
project
-apps
--test
—-account
В чем я не прав? -
Есть в каталоге apps пустой файл __init__.py ?


