如何使用Django中的权限向特定用户显示特定信息
我的应用程序中有一个菜单(django console菜单),我想限制对其元素的访问(也不显示模型),但为普通用户提供报告。如果用户是如何使用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
超级用户
,让他查看所有内容(用户、库存…请参阅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票了。这基本上是“为我开发”也看看这里: