在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中使用Kotlin值类   在Hadoop中表示大文本块作为键的java   java安卓工作室;布局设计视图;   字典Java确定字符串是否以映射中的键开头   JavaG1:混合gc和完全gc之间有什么区别?   java Camunda升级组织。阿帕奇。平民语言错误   java Scanner类具有NextLine无限循环   安卓 GCM Java服务器:发送带有重音字符的消息   java我正在构建一个兴趣计算应用程序,我的项目构建良好,有1个警告,但它不会在我的设备上打开   java在Tilera TileGX上构建OpenJDK 8   GUI中的java惰性初始化与急切初始化   java JodaTime四舍五入到最近的一刻钟   java如何限制菜单。SpringRoo中的jspx可以避免对其他用户的实体执行CRUD操作   java我应该将缓冲流链接到输入流,还是在将声音库作为嵌入式资源加载时使用URL类?