Курс Python → Декоратор для группы пользователей в Django

Для защиты определенных вьюшек и предоставления доступа только определенной группе пользователей в Django, можно использовать декоратор @group_required. Этот декоратор позволяет нам определить список групп, которым требуется доступ к определенной вьюшке. Вместо того, чтобы вручную проверять принадлежность пользователя к определенной группе в каждой вьюшке, можно просто применить этот декоратор к нужным представлениям.

Для создания декоратора @group_required в Django, можно использовать следующий код:


from django.contrib.auth.decorators import user_passes_test

def group_required(*group_names):
    def in_groups(user):
        if user.is_authenticated:
            if bool(user.groups.filter(name__in=group_names)) | user.is_superuser:
                return True
        return False
    return user_passes_test(in_groups)

В этом коде мы создаем функцию group_required, которая принимает список названий групп в качестве аргументов. Затем мы определяем функцию in_groups, которая проверяет, принадлежит ли пользователь к одной из указанных групп или является ли он суперпользователем. В конечном итоге, функция user_passes_test возвращает результат проверки на принадлежность к группе.

Применение декоратора @group_required к вьюшкам в Django выглядит следующим образом:


from django.shortcuts import render
from django.contrib.auth.decorators import login_required
from .decorators import group_required

@login_required
@group_required('admin', 'editor')
def protected_view(request):
    return render(request, 'protected_view.html')

В этом примере мы применяем декораторы @login_required и @group_required('admin', 'editor') к вьюшке protected_view, что означает, что только аутентифицированные пользователи, принадлежащие к группам ‘admin’ или ‘editor’, могут получить доступ к этой вьюшке.

Твои коллеги будут рады, поделись в

Автор урока

Дмитрий Комаровский
Дмитрий Комаровский

Автоматизация процессов
в КраснодарБанки.ру

Другие уроки курса "Python"

  1. Переопределение унарных операторов
  2. Разбиение текста в Python
  3. Роль ключевого слова self
  4. Работа с deque из collections
  5. Работа с каталогами в Python
  6. Оператор in для Python
  7. Форматирование строк с помощью f-строк
  8. Модуль sys: основы
  9. Поиск наиболее частого элемента в списке
  10. Метод eq для сравнения объектов
  11. Оператор in и not in в Python
  12. Проверка подстроки в строке
  13. Условные выражения в Python
  14. Получение текущей даты и времени с помощью datetime
  15. Операции с датами в Python
  16. Тестирование времени с Freezegun
  17. Изменение переменной в Python: nonlocal
  18. Преобразование чисел в Python
  19. Объявление переменных в Python
  20. Регистрация на хакатоне
  21. Аннотации типов в Python
  22. Декораторы в Python
  23. Форматирование строк в Python
  24. Создание генераторов в Python
  25. Сравнение строк в Python
  26. Получение размера объекта с sys.getsizeof()
  27. Создание итератора
  28. Регистрация на TenChat
  29. 9 уловок для чистого кода
  30. Метод __index__ в Python
  31. Функция findall() для поиска вхождений строки
  32. Работа с очередями в Python
  33. Удаление элементов по срезу
  34. Преобразование документов в PDF с помощью Spire.Office
  35. Изменение логики работы с временем
  36. Создание тестовых данных с Faker
  37. Сравнение строк в Python
  38. Переопределение метода __and__
  39. Многострочные комментарии в Python
  40. Вакансии в Nebius
  41. Строки в Python: апострофы и кавычки
  42. Фильтрация списков с itertools

Marketello читают маркетологи из крутых компаний