Курс 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. Отрицательные индексы списков в Python
  3. Закрытие файла в Python
  4. Работа с Telegram API на Python
  5. Подробная информация о %pinfo
  6. Декоратор @override
  7. Модуль os: работа с файлами и папками
  8. Функции range() в Python
  9. Функции в Python: создание и вызов
  10. Сортировка с помощью key
  11. Замена подстроки
  12. Сравнение def и lambda функций в Python
  13. Функция enumerate() в Python
  14. Поиск самого длинного слова в списке с использованием max()
  15. Работа со слайсами
  16. Методы classmethod и staticmethod
  17. Обработка исключений в Python
  18. Протокол управления контекстом
  19. Метод pos в Python
  20. Выбор редактора кода.
  21. Подсчет элементов с помощью Counter из collections
  22. Операторы объединения в Python 3.9
  23. Преобразование PowerPoint в PDF.
  24. Объединение словарей в Python
  25. Создание GUI на Tkinter
  26. Генерация QR-кодов с библиотекой qrcode
  27. Метод rlshift для битового сдвига
  28. Оптимизация памяти с slots
  29. Блок else в циклах.
  30. Метод difference_update() — разность множеств
  31. Проверка элемента в множестве.
  32. Шаблоны Flask: условия и циклы
  33. Вычисление натуральных логарифмов в NumPy
  34. Поиск уникальных и повторяющихся элементов
  35. Модуль subprocess: запуск внешних команд
  36. Создание словарей в Python
  37. Установка Git и AWS CLI
  38. Работа с рекламными данными в Pandas
  39. Округление в Python
  40. Функция rsplit() в Python
  41. Распаковка аргументов в Python
  42. Методы работы со строками в Python
  43. Списковый компрехеншен.

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