在django应用程序中创建简单的“if this then that”样式规则。提供了一系列现成的操作和条件,但也很容易扩展,并允许特定于模型的操作/条件。

django-conditioner的Python项目详细描述


Build statusPyPI versionPython versionsLicense

在django中创建简单的'if this then that'样式规则 申请。提供了一系列随时可用的操作和条件, 但是也很容易扩展并且允许特定于模型 行动/条件。

conditioner帮助您创建由条件组成的简单规则 (如果是这样)和一个动作(那么是那样)。目前正在进行中, 但我们在生产中成功地使用了它 允许我们在用户 许可证到期。

它是为了“搔痒”,在可预见的未来 将优先实施我们需要的用例。总的来说 然而,目标是创建一组有用的操作和条件 可以应用于许多不同的场景。

哦,大声喊 django-polymorphic 没有它,这整件事就更难做了。

安装

>;来自PYPI:

$ pip install django-conditioner

用法

如果要使用已实现的操作和条件,则 只需安装包,将conditioner添加到 列出INSTALLED_APPS并运行$ python manage.py migrate

然后您应该在中看到一个Conditioner节和一个Rule子节 Django管理。添加一个新的应该是非常不言而喻的。

高级用法

动作和条件类型

操作和条件都分为泛型、模型泛型 以及特定型号:
-一般操作/条件不需要设置目标类型(即,日志 每周一的消息)-模型一般操作/条件需要一组 目标类型,但适用于所有可用模型(即记录消息 创建选定目标类型实例时)-模型特定 行动/条件的实施要考虑到特定的模型 区域仅在选中时可用(即在上向用户发送电子邮件 每周一);它们通常在特定字段上操作(^{tt6})$ 在前面的示例中)

添加新动作和/或条件

主要目标之一是使空调尽可能灵活。 尽可能简单地添加新的操作/条件。

创建操作

所有操作都需要从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管理中看到您的自定义操作。

API

到目前为止还没有合适的文档,但是代码被注释了 应该很容易使用。

也就是说-随便打开一个GitHub issue 如果有什么不清楚的话。

测试

在python 3.4、3.5和3.6上使用tox对包进行了测试 加上django 1.8、1.9和1.10(见tox.ini)。

要自己运行测试,您需要在存储库中运行tox

$ tox

贡献

包源代码位于 GitHub

放心吧使用、询问、叉、星、报告错误、修复错误、建议 增强功能,添加功能并指出任何错误。谢谢!

新的行动和条件更受欢迎,但应该是第一位的 讨论并达成一致。

作者

Omni Digital开发和维护。

MIT License下发布。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java游戏!框架伪造应用程序它实际上做什么?   java如何在JavaFx中显示表视图中的即时更改?   对象类的equals()方法的java重载   xpages介绍如何部署java。IBM Notes中的策略更改   java如何访问侦听器中的另一个视图?   java getDefaultDisplay()的替代方法是什么   java opencv匹配模板   java Android Firebase写入数据时的常量超时   在Java中,如何将包含大量空格的数字字符串转换为一系列Int变量。   带有GUI的swing Java模拟无法运行模拟   java NoSuchElementException在特定的Web端上使用无头铬和硒   java对文件进行迭代,即使文件在目录中也会出现“未找到文件”异常。你能告诉我为什么吗?谢谢   递归Java 8,匿名递归嵌套方法   java为什么我看到枚举常量的字段值会被序列化/反序列化?在哪种情况下,枚举中哪些内容没有序列化?   java在运行sonar scanner和Spotbugs规则时出错,用于单片项目?   java如何检查硬件键盘是否可用?(黑莓)   tile游戏动作侦听器循环中的java错误   sockets Java线程池与高请求场景中的新线程   java如何使用Hibernate注释在联接表上创建索引?