Подтвердить что ты не робот

Как выполнить пользовательскую команду django-admin для всего проекта?

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

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

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

4b9b3361

Ответ 1

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

Вот как я склонен структурировать свои проекты:

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.