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

Python 如何最好地组织Django系统的规则组件?,python,django,architecture,code-organization,Python,Django,Architecture,Code Organization,我正在用Django设计(并最终编写)一个系统,它由两个主要组件组成: 游戏经理:这本质上是一个数据输入部件。受信任(非公开)用户将在游戏系统上输入信息,例如玩家可能拥有的选项。它的接口仅仅是Django管理控制台,除了保存信息之外,它不“做”任何事情 字符管理器:这是上述数据的使用者。公共用户将在上面定义的角色扮演系统中创建角色,从这些受信任用户输入的选项中提取。从Django的角度来看,这是项目中一个单独的应用程序 然而,有一件事我不知道该放在哪里,那就是与每一场比赛相关的“规则”。本质上,

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

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

    该逻辑用于验证特定角色的过程,但与特定游戏相关,需要动态交换。它是一个单独的应用程序,还是应该与角色管理器的表单绑定?或者两者都可以

    这是我从零开始构建的第一个Django应用程序(而不是啃别人的代码),而且我对Python的启动哲学还不熟悉,所以我对此非常关注


    提前感谢。

    我将使用游戏逻辑在应用程序中创建名为rules的子目录,并在其中创建以每个游戏命名的模块,供您使用。然后为这些模块创建一个通用接口,供您的游戏使用,并按名称导入适当的规则模块(如果您的游戏名为adom,则只需在主游戏引擎中导入('rules.adom'),并调用特定于游戏的方法

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

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

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

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

    还有类似的结构化逻辑,所有游戏都会用到

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

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

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

    是否应该将验证绑定到角色管理器的表单


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

    游戏组件有自己的一组模型,但没有视图(管理控制台除外),并且所有游戏数据都在单个应用程序(“游戏管理器”)中输入,而不是在每个游戏的单独应用程序中。角色端将有来自游戏端的单独模型和视图,但会从该端提取一些数据。我考虑过游戏脚本方法,但担心这么多DB调用和执行的潜在速度问题。角色端将使用AJAX调用验证所做的每个更改。在你看来,这不是问题吗?啊,好吧。这很有道理。很高兴,我能帮上忙。我曾经也是RPG迷:-)