2

背景资料:

我为一家公司创建了一个内部站点。大部分工作都用于制作销售人员可以用来为客户提供报价的计算工具。创建可下载的 pdf 报价和合同、比较价格等。所有这些都运行良好。

现在他们的销售人员被分成了两组。

  1. 一组是公司雇用的销售人员。
  2. 另一组是公司本身的人。

问题:

我现在面临的挑战是,在某些情况下,我需要根据销售人员的类型显示不同的内容。计算工具的一些规则将有不同的规则,比如允许哪些数字等。但是网站的很大一部分对于两组仍然是相同的。

我想知道的是,是否有处理这个问题的好方法?

我自己的想法:

我考虑过使用 contrib.auth 中可用的组来管理它。这样我可以保留一个单一的代码库,但必须在很多不同的地方制定规则。验证表单以检查是否允许输入的数字的规则将取决于用户所在的组。有些东西会有不同的名称,或者工作流程可能会有点不同。某些工具仅对其中一个组可用。现在这似乎是一个快速的解决方案,但如果这两个群体需要越来越多地改变,这似乎很快就会变得难以管理。

我还考虑过制作两个不同的网站。这里的想法是创建两个组都使用的应用程序,所以我只需要为那个地方编写代码。然后我可以为每个站点制作自定义部件,而无需在大多数模板和视图中检查用户。但我不确定这是否是解决问题的好方法。这会产生很多额外的工作,如果两个小组可以使用很多相同的代码,这可能真的不需要。

最大的担忧是我真的不知道这是如何演变的,所以最终可能会导致两组完全不同或只有很少的差异。我想做的是编写一些可以支持这两种情况的代码,这样我就不会在半年后后悔我的选择。

那么,您如何处理这种用户管理情况。我正在寻找解决此问题的想法技术或可重复使用的应用程序,而不是现成的解决方案。

说明:

我的问题不是可以使用模板完成的纯粹演示,而且某些计算工具(填写的表格)将应用不同的规则/验证,并且在某些情况下完成的计算也会有所不同。所以他们可能会看到相同的表格,但不允许输入相同的数字,并且相同的数字可能不会给出相同的结果。

4

2 回答 2

1

您可以在django 附带的模型上使用代理模型。GroupUser

然后在代理模型里面写下你的授权和计算方法。如果稍后添加了一个新组,您只需要添加/更改这两个代理模型中的方法。然后让 Group 和 User 的每个实例(显然只在必要时,而不是字面上的每一个)找到代理模型而不是实际的 contrib 模型。

于 2010-02-22T14:24:35.063 回答
0

如果我对您的理解正确,您似乎希望两个不同的组可以访问所有相同的视图,但他们会看到不同的数字。您可以通过为不同的组制作单独的模板,然后根据当前用户的组为每个视图加载适当的模板来实现此效果。

同样,您可以使用上下文处理器将当前组放入每个视图的上下文中,然后将条件放入模板中以选择要显示的数字。

另一种选择是为两个不同的组设置两组单独的视图。然后在视图上使用装饰器,以确保组只访问适合他们的视图。

于 2010-02-22T15:07:58.900 回答