Как сделать пользовательскую команду django-admin для всего проекта? - PullRequest
13 голосов
/ 06 марта 2011

В Django легко написать пользовательских команд управления для django-admin.py/manager.py.

Однако эти команды находятся на уровне приложения , а не на уровне проекта в целом. Вы помещаете реализации в каталог <project_dir>/<app_dir>/management/commands, и они автоматически обнаруживаются.

У меня есть несколько команд уровня проекта, не привязанных ни к одному приложению в проекте. Я могу добавить их в одно из приложений, но есть ли способ реализовать команды управления на уровне проекта в Django?

1 Ответ

15 голосов
/ 06 марта 2011

У вас может быть приложение под названием core или подобное, в котором содержатся вещи, не связанные с каким-либо приложением.Это могут быть команды управления, шаблоны, модели и, возможно, другие модули, такие как формы, декораторы, промежуточное программное обеспечение.Вы можете использовать каталог своего проекта в качестве основного приложения.

Вот как я структурирую свои проекты:

project_name
    not_reusable_app1
    not_reusable_app2
    templatetages
    tempates
    utils
    models.py
    settings.py
    management
    middleware.py
    forms.py
    processors.py
    __init__.py
parts
    reusable-app-1
        reusable_app_1
        setup.py
    reusable-app-2
    reurable-app-3
    gereric-python-lib
    django
setup.py

Мой INSTALLED_APPS обычно выглядит так:

INSTALLED_APPS = (
    ...
    'project_name',
    'project_name.not_reusable_app1',
    'reusable_app1',
    ...
)

Я не даю особого отношения к приложениям django, скомпилированным с другими пакетами python.Например, я не помещаю их в apps или подобный каталог.

Ясно, что мои приложения, которые нельзя использовать повторно, являются частью проекта.Неиспользуемые приложения в проекте обычно используют различные утилиты из проекта, например project_name.utils.decorators.some_kind_of_deco.

Если вам не нравится использовать проект в качестве приложения, как я уже говорил, вы можете переместить все в project_name.core.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...