在django应用程序中创建简单的“if this then that”样式规则。提供了一系列现成的操作和条件,但也很容易扩展,并允许特定于模型的操作/条件。
django-conditioner的Python项目详细描述
在django中创建简单的'if this then that'样式规则 申请。提供了一系列随时可用的操作和条件, 但是也很容易扩展并且允许特定于模型 行动/条件。
conditioner帮助您创建由条件组成的简单规则 (如果是这样)和一个动作(那么是那样)。目前正在进行中, 但我们在生产中成功地使用了它 允许我们在用户 许可证到期。
它是为了“搔痒”,在可预见的未来 将优先实施我们需要的用例。总的来说 然而,目标是创建一组有用的操作和条件 可以应用于许多不同的场景。
哦,大声喊 django-polymorphic 没有它,这整件事就更难做了。
安装
>;来自PYPI:
$ pip install django-conditioner
用法
如果要使用已实现的操作和条件,则 只需安装包,将conditioner添加到 列出INSTALLED_APPS并运行$ python manage.py migrate。
然后您应该在中看到一个Conditioner节和一个Rule子节 Django管理。添加一个新的应该是非常不言而喻的。
高级用法
动作和条件类型
添加新动作和/或条件
主要目标之一是使空调尽可能灵活。 尽可能简单地添加新的操作/条件。创建操作
所有操作都需要从BaseAction继承并实现 run_action()。模型泛型操作应将model_specific设置为 True,模型特定的操作应该将其设置为返回所需的 模型类。如果您的操作是特定于模型的,那么模型实例将 作为instance命名参数传递给run_action()方法。
确保动作由django拾取
您需要确保新创建的操作由 詹戈。假设它位于内部的actions.py文件中 sample_module模块,您的sample_module/apps.py应该 像这样:
fromdjango.appsimportAppConfigclassSampleModuleAppConfig(AppConfig):name='sample_module'defready(self):# Make sure that all models are importedfromsample_moduleimportactions# noqa
向django admin注册操作
最后,您需要将操作连接到Ruledjango管理员。 通过将其添加到可用内联多态性列表中 型号:
frompolymorphic.adminimportStackedPolymorphicInlinefromconditioner.adminimportActionInlinefromsample_module.actionsimportSampleModuleAction# Register `SampleModuleAction` action to 'conditioner' Django AdminclassSampleModuleActionInline(StackedPolymorphicInline.Child):model=SampleModuleActionActionInline.child_inlines.append(SampleModuleActionInline)
假设您将上面的代码放在sample_module/conditioner.py 文件,你需要确保Django也在 正在将from sample_module import conditioner添加到应用程序配置中 ready()方法。
现在您应该在django管理中看到您的自定义操作。
测试
在python 3.4、3.5和3.6上使用tox对包进行了测试 加上django 1.8、1.9和1.10(见tox.ini)。
要自己运行测试,您需要在存储库中运行tox:
$ tox