Хочу дать пользователям из разных групп доступ только в их часть сайта. Авторизацию делаю таким образом:
def signin(request):
    if request.method == 'GET':
        return render(request, 'site/login.html')
    elif request.method == 'POST':
        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)
                if user.groups.filter(name__in=['Admins']) or user.is_superuser:
                    return HttpResponseRedirect('/cp/')
                elif user.groups.filter(name__in=['Counteragents']):
                    return HttpResponseRedirect('/counteragent/')
                elif user.groups.filter(name__in=['Clients']):
                    return HttpResponseRedirect('/client/')
            else:
                pass
        else:
            pass
Затем на вьюшках проверяю пренадлежность пользователя к нужной группе:
def admin_check(user):
    if user.groups.filter(name__in=['Admins']) or user.is_superuser:
        return True
    else:
        return False
@user_passes_test(admin_check)
def admin_home(request):
    return render(request, 'admin/home.html')
Есть ли лучшее решение данного вопроса? Может такой подход вообще никуда не годится?