【发布时间】:2013-11-06 04:38:09
【问题描述】:
我有一个用户表“UserInfo”并创建了两个组“管理员”和“普通用户”,并为这些组授予了一些权限。
我根据用户的类型将用户添加到特定组,即如果用户是管理员,我会将管理员的权限授予该用户。
现在我想检查一个特定的用户是否 has_perm,并且我想将用户添加到表 auth_user_group 中。我该怎么做?
【问题讨论】:
标签: django python-2.7
我有一个用户表“UserInfo”并创建了两个组“管理员”和“普通用户”,并为这些组授予了一些权限。
我根据用户的类型将用户添加到特定组,即如果用户是管理员,我会将管理员的权限授予该用户。
现在我想检查一个特定的用户是否 has_perm,并且我想将用户添加到表 auth_user_group 中。我该怎么做?
【问题讨论】:
标签: django python-2.7
每个用户都有一个groupsManyToManyManager,它将列出他们的组。如果要将用户添加到组,请使用ManyToManyManager api:
u = User.objects.get(pk=1)
g = Group.objects.get(name='admin')
u.groups.add(g)
u.save()
u.groups.remove(g)
u.save()
将用户添加到组后,他们将继承该组的所有权限。没有与has_perm 等效的方法来检查用户是否在组中,但是有user_passes_test 可以用来检查用户是否通过任何条件。它通过调用您使用用户对象定义的任何函数来工作:
from django.contrib.auth.decorators import user_passes_test
from django.shortcuts import render
def is_admin(user):
return user.group_set.filter(name='admin').count()
@user_passes_test(is_admin)
def only_admin(request):
return render(request, 'sekret.html')
【讨论】:
UserInfo 模型。