1. gqbe.livejournal.com

    08.10.2008 09:49

    Кто как группирует? Мне сразу не понравилось то что в корневой папке будет свалка.
    Пока придумал такую штуку.
    Допустим мы хотим создать 2 группы: group1 и group2. Структура папкок будет такой
    project
    group1
    app1
    app2
    group2
    app3
    app4
    settings.py
    Теперь в settings py импортируем group1 и group2 в path:
    ...
    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',
    )
    Какие есть недостатки у данного метода?
  2. Иван Сагалаев

    08.10.2008 12:19

    Обычно вообще не рекомендуют держать приложения в папке проекта: нечего им там делать. Проект должен содержать небольшое количество файлов (настройки, 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

  3. Never

    12.10.2008 13:23

    При попытке подключить
    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

    В чем я не прав?
  4. Dyadya Zed

    12.10.2008 15:09

    Есть в каталоге apps пустой файл __init__.py ?

bbcode