如何进行项目范围的自定义django-admin命令?

时间:2011-03-06 13:12:50

标签: django

在Django中,为{django-admin.py/manager.py写custom management commands很容易。

但是,这些命令位于应用程序级别,而不是整个项目级别。您将实现放入<project_dir>/<app_dir>/management/commands目录,然后自动发现它们。

我有许多项目级别的命令,与项目中的任何一个应用程序无关。我可以把它们放在其中一个应用程序中,但有没有办法在Django中实现项目级管理命令?

1 个答案:

答案 0 :(得分:15)

您可以拥有名为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',
    ...
)

我不对任何与其他python包兼容的django应用程序进行任何特殊处理。例如,我不会将它们放在apps或类似的目录下。

很明显,我的不可重复使用的应用程序是项目的一部分。项目中不可重复使用的应用程序通常使用项目中的各种实用程序,例如project_name.utils.decorators.some_kind_of_deco

如果您不喜欢将项目用作应用程序,就像我提到的那样,您可以将所有内容移至project_name.core