Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Django中为具有相同访问权限但不同规则的组处理用户管理? 背景资料:_Python_Django_User Management - Fatal编程技术网

Python 如何在Django中为具有相同访问权限但不同规则的组处理用户管理? 背景资料:

Python 如何在Django中为具有相同访问权限但不同规则的组处理用户管理? 背景资料:,python,django,user-management,Python,Django,User Management,我已经为一家公司创建了一个内部网站。大部分工作都用于制作计算工具,销售人员可以使用这些工具为客户报价。创建可下载的pdf报价和合同,比较价格等。所有这些都很好 现在他们的销售人员分为两组 一组是公司雇佣的销售人员 另一类人是公司本身 问题是: 我现在面临的挑战是,在某些情况下,我需要根据销售人员的类型显示不同的内容。一些计算工具的规则会有不同的规则,比如哪些数字是允许的等等。但是网站的很大一部分对于这两个群体来说仍然是相同的 我想知道的是,是否有处理这个问题的好方法 我自己的想法: 我考虑过使用

我已经为一家公司创建了一个内部网站。大部分工作都用于制作计算工具,销售人员可以使用这些工具为客户报价。创建可下载的pdf报价和合同,比较价格等。所有这些都很好

现在他们的销售人员分为两组

  • 一组是公司雇佣的销售人员
  • 另一类人是公司本身
  • 问题是: 我现在面临的挑战是,在某些情况下,我需要根据销售人员的类型显示不同的内容。一些计算工具的规则会有不同的规则,比如哪些数字是允许的等等。但是网站的很大一部分对于这两个群体来说仍然是相同的

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

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

    我还考虑制作两个不同的网站。这里的想法是创建两个组都使用的应用程序,所以我只需要为这1个位置编写代码。然后我就可以为每个站点定制部件,而不需要在大多数模板和视图中检查用户。但我不确定这是否是一种好的方式。这将产生大量额外的工作,如果这两个组可以使用大量相同的代码,这可能不是真正需要的

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

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

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

    您可以在django附带的
    组和
    用户
    模型上使用


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

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

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


    另一个选项是为两个不同的组提供两组独立的视图。然后在视图上使用装饰器,以确保组只转到它们的视图。

    计算是作为对象上的方法进行的,该对象保存用于计算的数据,因此无法将计算移动到用户对象。但是代理模型看起来很有趣,我会仔细看一看,如果这能对我有所帮助的话。