首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >让Django超级用户在游戏化组件中定义新的徽章

让Django超级用户在游戏化组件中定义新的徽章
EN

Stack Overflow用户
提问于 2011-12-21 11:55:54
回答 1查看 399关注 0票数 3

我们正在Django实现一个项目的游戏化组件。我们希望超级用户能够在Django管理界面中定义新的徽章并重新定义现有的徽章。

我们所看到的问题是,需要用代码来定义有时复杂的徽章条件。超级用户将是技术知识,但不会是一个程序员。

您将如何让超级用户在Django管理界面中这样做,而不是改变应用程序?

下面是一些徽章的例子:

members.

  • Answered

  • 创建了10个标记,用于10个不同的questions.

  • Wrote问题的10个问题,10个未回答的questions.

  • Wrote 20对一个问题的评论(每个注释至少得到5分)。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-21 17:08:07

你不会说你是否希望超级用户成为一个程序员。

如果您可以假设这一点,那么可以在数据库字段中包含Python代码,并使用evalexec来运行它。

例如:

代码语言:javascript
运行
复制
badge.function = """
def award_badge(user):
    return False
"""

vars = {}
exec(badge.function, vars)

if vars["award_badge"](user):
    ...

显然,这有很大的滥用或错误的空间,如果你期望非技术用户创建徽章,那肯定是不合适的。

根据需要创建的规则的复杂性,您可能能够创建用于执行这些规则的规则引擎。在这种情况下,您可以创建一种微型语言,其中决定是否授予徽章的过程中的每一步都由数据库中的一行指定。规则引擎是一个复杂的话题,所以我不会在这里详细讨论。

您最好在代码中硬编码徽章规则,而不是使用这些建议中的任何一个。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8589408

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档