您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在Django中,如何检查用户是否在某个组中?

在Django中,如何检查用户是否在某个组中?

你只需通过上的groups属性即可访问组User

from django.contrib.auth.models import User, Group

group = Group(name = "Editor")
group.save()                    # save this new group for this example
user = User.objects.get(pk = 1) # assuming, there is one initial user 
user.groups.add(group)          # user is Now in the "Editor" group

然后user.groups.all()返回[<Group: Editor>]

另外,更直接地,你可以通过以下方式检查用户是否在组中:

if django_user.groups.filter(name = groupname).exists():

    ...

注意,groupname它也可以是实际的Django组对象。

你的User对象通过ManyToMany关系链接到Group对象。

因此,你可以将filter方法应用于user.groups。

因此,要检查给定的用户是否在某个组中(示例为“成员”),只需执行以下操作:

def is_member(user):
    return user.groups.filter(name='Member').exists()

如果要检查给定用户是否属于多个给定组,请使用__in运算符,如下所示:

def is_in_multiple_groups(user):
    return user.groups.filter(name__in=['group1', 'group2']).exists()

请注意,这些功能可以与@user_passes_test装饰器一起使用,以管理对视图的访问:

from django.contrib.auth.decorators import login_required, user_passes_test
@login_required
@user_passes_test(is_member) # or @user_passes_test(is_in_multiple_groups)
def myview(request):
    # Do your processing

希望有帮助

Go 2022/1/1 18:22:35 有447人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶