一个允许在admin中创建条件逻辑的Django应用程序。
项目描述
django-conditions
将经常更改的条件逻辑从代码移动到模型中,以便可以在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 查看哈希值)