РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
556 of 818 menu

Атрибут is_staff

Атрибут is_staff класса User является булевым полем, которое указывает, может ли пользователь входить в административную панель Django. Он используется для разграничения доступа к интерфейсу администратора: если атрибут установлен в True, пользователь считается персоналом и получает доступ к админке, при условии что он также аутентифицирован и активен. Этот атрибут не предоставляет автоматически никаких дополнительных прав на изменение данных, но служит первым уровнем проверки при доступе к административному интерфейсу.

Синтаксис

Атрибут доступен для чтения и записи у экземпляра модели User:

from django.contrib.auth.models import User user = User.objects.get(username='john') if user.is_staff: print("User is staff member") else: print("User is not staff member")

При создании нового пользователя атрибут по умолчанию имеет значение False. Для создания суперпользователя с установленным is_staff=True используется специальная команда или метод:

from django.contrib.auth.models import User # Создание обычного пользователя user = User.objects.create_user(username='john', password='pass123') print(user.is_staff) # Выведет: False # Создание пользователя с правами персонала staff_user = User.objects.create_user(username='admin', password='admin123') staff_user.is_staff = True staff_user.save()

Пример . Со списком пользователей

Получим список всех пользователей и выведем информацию о том, является ли каждый из них персоналом:

from django.contrib.auth.models import User users = User.objects.all() for user in users: status = "staff" if user.is_staff else "regular" print(f"{user.username}: {status}")

Результат выполнения кода:

"john: regular" "admin: staff" "alice: regular"

Пример . Проверка прав в представлении

Проверим, имеет ли текущий пользователь доступ к административной панели, используя атрибут is_staff:

from django.contrib.auth.models import User from django.http import HttpResponse def check_admin_access(user_id): user = User.objects.get(id=user_id) if user.is_staff and user.is_active: return HttpResponse("Access granted to admin panel") return HttpResponse("Access denied")

Пример . Работа с декоратором

В Django существует встроенный декоратор staff_member_required, который проверяет атрибут is_staff и перенаправляет неавторизованных пользователей:

from django.contrib.admin.views.decorators import staff_member_required from django.http import HttpResponse @staff_member_required def admin_dashboard(request): return HttpResponse("Welcome to admin dashboard")

Смотрите также

  • атрибут is_superuser,
    который предоставляет все права без ограничений
  • атрибут is_active,
    который определяет активность учётной записи
  • атрибут is_authenticated,
    который проверяет, аутентифицирован ли пользователь
  • метод create_superuser,
    который создает суперпользователя со всеми правами
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить