如何最好地组织Django系统的规则组件?

时间:2010-08-17 15:54:09

标签: python django architecture code-organization

我正在设计(并最终编写)Django中的一个系统,该系统由两个主要组件组成:

  1. 游戏管理器:这本质上是一个数据输入部分。可信(非公共)用户将输入游戏系统的信息,例如玩家可能具有的选项。这个界面完全是Django管理控制台,除了保存信息外,它不会“做”任何事情。
  2. 角色管理员:这是上述数据的消费者。公共用户将在上面定义的角色扮演系统中创建角色,从这些受信任用户输入的选项中提取。从Django的角度来看,这是一个单独的应用程序。
  3. 然而,有一件我不确定放在哪里,那就是与每场比赛相关的“规则”。基本上,对于放入第一个应用程序的每个游戏,都有一组特定于该游戏的先决条件,限制和其他业务逻辑。 (所有游戏都有类似结构的逻辑。)逻辑将用Python编码,而不是用户输入。

    该逻辑在验证特定字符的过程中 ,但与特定游戏关联,需要动态换出。它是一个单独的应用程序,还是应该验证与角色管理器的形式相关联?或者可以两者兼而有之?

    这是我从头开始构建的第一个Django应用程序(而不是咀嚼别人的代码),而且我是Python新手的新手,所以我全神贯注于此。

    提前致谢。

2 个答案:

答案 0 :(得分:1)

我会在应用程序中使用游戏逻辑创建名为规则的子目录,并在每个游戏中创建以您希望提供的模块。然后为这些模块创建一个通用界面,将由您的游戏使用并按名称导入适当的规则模块(如果您的游戏称为adom,那么只需在主游戏引擎内__import__('rules.adom')并调用游戏特定方法。 / p>

如果您的游戏没有创建自己的模型和视图,那么似乎没有理由为每个游戏创建特定的应用程序。这是一个微妙的问题,因为使用的代码基于存储在数据库中的数据。您是否考虑过将其他游戏脚本存储在数据库中,然后exec将它们存储起来?这似乎更自然:游戏是一组数据和与该游戏相关的其他脚本。

答案 1 :(得分:1)

  

与每个游戏相关的“规则”。

     

对于放入第一个应用程序的每个游戏,都有一组先决条件,限制以及特定于该游戏的其他业务逻辑。

那是游戏应用程序的一部分。

  

所有游戏都有类似结构的逻辑。

那是游戏应用程序的一部分。

  

该逻辑用于验证特定角色的过程,但与特定游戏相关联。

正确。那么这就是游戏应用程序的一部分。角色与一个或多个游戏相关联。

  

它是否应该与角色管理器的形式相关联?

角色表单可以具有依赖于游戏的数据清理规则。