Your User对象链接到Group对象通过一个多对多关系。
您可以因此应用filter方法用户组.
因此,要检查给定用户是否属于某个组(例如“成员”),只需执行以下操作:
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()
请注意,这些函数可以与@用户通行证测试装饰器来管理对视图的访问:
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
对于基于类的视图,您可以使用UserPassesTestMixin
with test_func
method:
from django.contrib.auth.mixins import LoginRequiredMixin, UserPassesTestMixin
class MyView(LoginRequiredMixin, UserPassesTestMixin, View):
login_url = '/login/'
redirect_field_name = 'redirect_to'
def test_func(self):
return is_member(self.request.user)
希望这有帮助