【问题标题】:Check if user has certain permissions in Django检查用户是否在 Django 中具有某些权限
【发布时间】:2017-08-06 15:30:51
【问题描述】:

我有以下类,名为 custom_class.py。我只需要一种方法来检查我的视图如果某个用户是管理员,并显示一些 DIV,如果不是,则隐藏它们。任何帮助表示赞赏。

class Backend_user:
    parents = {'Administrator': 'None',
               'Supervisor': 'Administrator',
               'Operator': 'Supervisor',
               }
    childs = {'Administrator': 'Supervisor',
              'Supervisor': 'Operator',
              'Operator': 'Boss',
              }

    def __init__(self, user):
        self.user = user
        self.permissions = OrderedDict()
        self.permissions_plural = OrderedDict()
        self.permissions_plural['Administrator'] = 'Administrators'
        self.permissions_plural['Supervisor'] = 'Supervisors'
        if hasattr(user, "administrator"):
            self.my_specialty = getattr(user, 'administrator')
            self.permissions['Administrator'] = True
            self.permissions['Supervisor'] = True
            self.permissions['Operator'] = True
            self.permissions['Boss'] = True
        elif hasattr(user, "supervisor"):
            self.my_specialty = getattr(user, 'supervisor')
            self.permissions['Administrator'] = False
            self.permissions['Supervisor'] = True
            self.permissions['Operator'] = True
            self.permissions['Boss'] = True

【问题讨论】:

  • 你在使用django的默认用户表吗
  • @ArpitSolanki 不,我正在使用自定义的
  • def __init__(self, user): 中的用户是什么?如果这是您的基本用户,您是否也愿意发布它。
  • @ArpitSolanki 这是一个我必须“修复”的项目,它有点庞大。我的意思是,数十万行代码。我所知道的是这个类实际上是用户权限架构:/
  • 所以这一行hasattr(user, "administrator") 正在检查您的用户是否为管理员?

标签: python django python-2.7 django-views


【解决方案1】:

假设您有一个带有某个名称的用户表,它也是 Backend_user 表的 ForeignKey,因此您可以简单地检查用户是否是管理员。您必须从用户表中获取用户对象,然后检查它是否具有属性

def some_view(request):
    user_obj = CustomUser.objects.get(id=some_id) # get the user here
    if hasattr(user_obj, "administrator"):  # checking if user is admin
        # show some div
    else:
        # don't show

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-23
    • 2019-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    • 2011-02-26
    相关资源
    最近更新 更多