跳转到主要内容

一个允许在admin中创建条件逻辑的Django应用程序。

项目描述

django-conditions

CI codecov Codacy Badge Dependency Status Documentation Status

将经常更改的条件逻辑从代码移动到模型中,以便可以在admin中轻松修改逻辑。一些可能的用例

  • 将用户基础划分为具有针对性消息的队列
  • 根据用户的预期价值向用户提供不同的奖励
  • 在游戏中定义任务/寻宝的获胜目标
  • 等等...

安装

首先安装django-conditions

pip install django-conditions

然后添加conditions到你的INSTALLED_APPS设置

## settings.py
INSTALLED_APPS = [
    ...
    'conditions',
]

基本用法

首先在代码中定义一个条件

## condition_types.py
from conditions import Condition

class FullName(Condition):
    # The name that appears in the db and represents your condition
    condstr = 'FULL_NAME'

    # Normal conditions define eval_bool, which takes in a user
    # and returns a boolean
    def eval_bool(self, user, **kwargs):
        return bool(user.first_name and user.last_name)

然后将ConditionsField添加到你的模型中

## models.py
from django.db import models
from conditions import ConditionsField, conditions_from_module
import condition_types

class Campaign(models.Model):
    text = models.TextField()

    # The ConditionsField requires the definitions of all possible conditions
    # conditions_from_module can take an imported module and sort this out for you
    target = ConditionsField(definitions=conditions_from_module(condition_types))

在admin中模型的更改表单,你可以输入JSON来表示你希望在何时满足你的条件。

{
    "all": ["FULL_NAME"]
}

现在你可以使用你在admin中创建的逻辑来决定事件的输出

## views.py
from django.http import HttpResponse
from conditions import eval_conditions
from models import Campaign

def profile(request):
    for campaign in Campaign.objects.all():
        if eval_conditions(campaign, 'target', request.user):
            return HttpReponse(campaign.text)

    return HttpResponse("Nothing new to see.")

在Django项目中使用django-conditions来更改简单逻辑,而无需重新部署,并将权限传递给产品经理和其他非工程师。

更多信息

完整文档可在Read The Docs上找到。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

django-conditions-0.9.18.tar.gz (15.6 kB 查看哈希值)

上传时间 源代码

构建分发

django_conditions-0.9.18-py3-none-any.whl (16.5 kB 查看哈希值)

上传时间 Python 3

由以下组织支持