允许多个应用重写django中的同一管理命令
django-mcmo的Python项目详细描述
版权所有2014-2017 Thomas Khyn
MCMO代表“管理命令多重覆盖”。这个django应用程序允许 多个应用程序重写同一管理命令而不逐出任何应用程序。
支持django 1.8到1.11以及匹配的python 2和3版本。
安装
尽可能简单,使用pip:
pip install django-mcmo
用法
在manage.py文件中,替换行:
from django.core import management
签署人:
from mcmo import management
现在可以使用同时为 django.core management命令。两个命令都将被调用。
例如,如果使用djinga和django-extra_keywords,则 两者都重写django的makemessagesmanagement命令,这两个命令都来自 随后将调用这两个应用程序。
将调用的第一个命令将是相对于 应用程序位于INSTALLED_APPS中的最新位置。
替代用法
在manage.py中自动生成(例如,如果使用 buildout使用djangorecipebook或djangorecipe),只需确保 声明:
import mcmo
在调用django.management.execute_from_command_line之前执行。
导入包会修补django.core.management模块,该模块 然后为多个覆盖支持启用功能。
限制
相同的名称重写都应派生自相同的命令类,或 从django的基本命令类(AppCommand或 LabelCommand)。
django-mcmo将发出警告(但执行将继续),以防 子类化不一致。例如,如果命令cmd在^{tt11}中$ 继承自AppCommand,而app2中的命令cmd继承自 LabelCommand。实际上,因为只有一个命令可能在 情况下,获得的结果可能不一致,因为它将取决于 应用程序在INSTALLED_APPS中的相对位置或引发异常 关于参数存在、不存在或类型。
实际上,只有当两个第三方应用程序 重写django核心管理命令。因此,它们将从 相同的命令基类,99.9%的情况下不会引起问题。
django-mcmo如果相同的选项是 在同一命令中显式添加了两个具有命令类的不同应用程序 不是彼此的子类。