登录到由组确定的页面

时间:2012-05-12 21:20:26

标签: python django django-views

我的应用在视图中有一个基本的登录功能:

def login_page(request):
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
    if user.is_active:
        login(request, user)
        return HttpResponseRedirect("main_page.html")
    else:
        return HttpResponseRedirect('/')
else:
    return HttpResponseRedirect('/')

我在admin(工作室,帐户等)中设置了不同的组,以便我可以在登录时将用户定向到他的特定组页面。我想做点什么:

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

if user is not None:
    if user.is_active:
        login(request, user)
        if User.objects.filter(group__iexact='studio') 
            return HttpResponseRedirect("studio_page.html")
    else:
        return HttpResponseRedirect('/')

但我认为我不能以这种方式访问​​群组成员。这项任务的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

UserGroup有ManyToMany关系。所以你可以这样做:

if user.groups.filter(name='studio').exists():

答案 1 :(得分:0)

user.groups是一个查询集,其中包含用户所属的所有组,因此您只需检查该集合中是否包含正确的组。像这样:

if user.groups.filter(name='studio').exists():
    return HttpResponseRedirect("studio_page.html")