Курс 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. Закрытие файла в Python
  2. Логирование с Logzero
  3. Форматирование строк в Python
  4. ChainMap избыточные ключи
  5. Участие в LP стейкинге Waves
  6. Расчет времени выполнения
  7. Проверка класса объекта
  8. Функция divmod() в Python
  9. Метод __float__ в Python
  10. Команда %dhist — список посещенных каталогов
  11. Работа со стеком в Python
  12. Операторы присваивания в Python
  13. Удаление и повторная вставка ключа в OrderedDict
  14. Работа со строками
  15. Создание файла с проверкой ошибки
  16. Структурирование именованных констант
  17. Работа со словарями в Python
  18. Работа с WindowsPath()
  19. Управление виртуальными окружениями в Python
  20. Разработка игры Pong с turtle
  21. Удаление элемента из списка
  22. Функция zip() для объединения списков
  23. Определение функций с необязательными аргументами
  24. Бесконечная проверка в Python
  25. Получение списка файлов в директории с использованием os
  26. Очистка входных данных
  27. Создание списка через цикл
  28. Объединение списков в Python
  29. Распаковка значений в Python
  30. Отслеживание выполнения программы с библиотекой tqdm
  31. Замена элементов в списке с помощью генераторов списков
  32. Подсказки типов в Python
  33. Проверка версии Python
  34. Названия столбцов в Python таблицах
  35. Работа с файлами в Python
  36. Проверка подстроки в строке с помощью in
  37. Упрощение работы с JSON-данными в Python
  38. Работа с модулем bisect
  39. Просмотр внешних файлов в %pycat
  40. Функция zip() в Python
  41. Генераторы в Python
  42. Метод matmul для умножения матриц
  43. Оператор assert в Python
  44. Инициализация структур данных
  45. Разделение строк методом split()

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