Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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
如何使用Django中的权限向特定用户显示特定信息_Django_Django Admin Tools - Fatal编程技术网

如何使用Django中的权限向特定用户显示特定信息

如何使用Django中的权限向特定用户显示特定信息,django,django-admin-tools,Django,Django Admin Tools,我的应用程序中有一个菜单(django console菜单),我想限制对其元素的访问(也不显示模型),但为普通用户提供报告。如果用户是超级用户,让他查看所有内容(用户、库存…请参阅settings.py)。我该怎么做 #管理员 下面是models.py的相关部分: # models.py ... class Message(models.Model): class Meta: app_label = 'myprox' date_created = models

我的应用程序中有一个菜单(django console菜单),我想限制对其元素的访问(也不显示模型),但为普通用户提供报告。如果用户是
超级用户
,让他查看所有内容(用户、库存…请参阅
settings.py
)。我该怎么做

#管理员

下面是models.py的相关部分:

# models.py

...
class Message(models.Model):
    class Meta:
        app_label = 'myprox'

    date_created = models.DateTimeField(null=False, default=datetime.utcnow)
    title = models.CharField(max_length=256, null=False, blank=False, default="Message Title")
    content = models.TextField(null=False, blank=True, default="Message Content")
    has_url = models.BooleanField(default=False)
    is_sticky = models.BooleanField(default=False)
    is_persistent = models.BooleanField(default=False)
    is_active = models.BooleanField(default=False)
    is_generic = models.BooleanField(default=True)
    time_shown = models.IntegerField(default=1, null=True, blank=False)
    specific_to_plan = models.CharField(max_length=256, null=False, blank=True)
    url = models.CharField(max_length=256, null=True, blank=True)

    def __unicode__(self):
        return self.content
现在是settings.py:

# settings.py

ADMIN_MENU = [
    {
        'name': 'Users',
        'models': [
            'User',
            'Message',
            'Payment',
        ],
        'icon': 'icon-user'
    },
    {
        'name': 'Inventory',
        'models': [
            'Country',
            'Server',
            'Package',
            'blog.post'
        ],
        'icon':'icon-user'
    },
    {
        'name': 'Blog',
        'models': [
            'Post',
        ],
        'icon':'icon-user'
    },
    {
        'name': 'Reports',
        'models': [
            ('Users', '/console/reports/users'),
            ('Usage', '/console/reports/usage'),
        ],
        'icon':'icon-user'
    }
]

<>你应该考虑改写你的<代码> Admin菜单>代码>,例如:

[
    {
        'name': 'Users',
        'models': [
            'app1.User',
            'app2.Message',
            'app3.Payment',
        ],
        'icon': 'icon-user'
    },
    (...)
]
if my_user.has_perm('menu.user'):
    # this user can see the Users menu entry
    pass
如果使用
列出模型:

my_user.has_perm('app1.list_user')和my_user.has_perm('app2.list_message')和my_user.has_perm('app3.list_payment')

这是一种方法。另一种更简单的方法是使用
auth.Permission
模型创建自定义权限,每个菜单项一个:

  • 菜单用户
  • 菜单.目录
  • menu.blog
  • 菜单.报告
因此,要检查用户有权查看哪些菜单项,必须执行以下操作:

[
    {
        'name': 'Users',
        'models': [
            'app1.User',
            'app2.Message',
            'app3.Payment',
        ],
        'icon': 'icon-user'
    },
    (...)
]
if my_user.has_perm('menu.user'):
    # this user can see the Users menu entry
    pass
模型


最后,我想也许你可以把菜单项移到你的数据库中,使用一些不错的应用程序,或者给每个用户权限一些菜单条目实例

你应该考虑改写你的<代码> ADMIN菜单>代码>:
[
    {
        'name': 'Users',
        'models': [
            'app1.User',
            'app2.Message',
            'app3.Payment',
        ],
        'icon': 'icon-user'
    },
    (...)
]
if my_user.has_perm('menu.user'):
    # this user can see the Users menu entry
    pass
如果使用
列出模型:

my_user.has_perm('app1.list_user')和my_user.has_perm('app2.list_message')和my_user.has_perm('app3.list_payment')

这是一种方法。另一种更简单的方法是使用
auth.Permission
模型创建自定义权限,每个菜单项一个:

  • 菜单用户
  • 菜单.目录
  • menu.blog
  • 菜单.报告
因此,要检查用户有权查看哪些菜单项,必须执行以下操作:

[
    {
        'name': 'Users',
        'models': [
            'app1.User',
            'app2.Message',
            'app3.Payment',
        ],
        'icon': 'icon-user'
    },
    (...)
]
if my_user.has_perm('menu.user'):
    # this user can see the Users menu entry
    pass
模型


最后,我认为您可以将菜单项移动到数据库中,并使用一些很好的应用程序,例如,或为每个用户授予对某些菜单项实例的权限。。。到目前为止你试过什么?我不知道为什么这个“问题”已经有3票了。这基本上是“为我开发”也看看这里:叹气。。。到目前为止你试过什么?我不知道为什么这个“问题”已经有3票了。这基本上是“为我开发”也看看这里: