允许多个应用覆盖Django中相同的同管理命令
项目描述
© 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的makemessages管理命令,那么这两个应用程序中的命令都将依次调用。
将被调用的第一个命令是相对位置在INSTALLED_APPS中最新位置的应用程序中的命令。
替代使用方法
在您的manage.py中自动生成(例如,如果您使用buildout配合djangorecipebook或djangorecipe),只需确保在调用django.management.execute_from_command_line之前执行以下语句:
import mcmo
。
导入该包将修补django.core.management模块,其功能随后将启用多覆盖支持。
限制
同名覆盖应该都来自同一个命令类,或者至少来自Django的基命令类之一(AppCommand或LabelCommand)。
django-mcmo在子类不一致的情况下将引发警告(但执行将继续)。例如,如果app1中的命令cmd从AppCommand继承,而app2中的命令cmd从LabelCommand继承。实际上,在这种情况下可能只会执行一个命令,因此获得的结果可能不一致,这取决于INSTALLED_APPS中应用的位置,或者引发有关参数存在、不存在或类型的异常。
在实践中,同名命令只有在两个第三方应用覆盖Django核心管理命令时才会遇到。因此,它们将来自同一个Command基类,在99.9%的情况下不会引起问题。
django-mcmo还可能在两个不同应用中具有不同命令类的同一命令中显式添加相同的选项时发出警告。
项目详细信息
django-mcmo-3.0.tar.gz的散列
算法 | 散列摘要 | |
---|---|---|
SHA256 | 9a350a18701d5596fced5e7832a7e504400c85a536b6c2b0ec39ba20bada0e29 |
|
MD5 | e3921cf53529d00c7ce5031158e12bf2 |
|
BLAKE2b-256 | 174558c6520734703fefa5468473dbd56c610e3c662c859224973b3643b1cfa1 |