Курс 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. Обработка ошибок в JSON данных
  3. Форматирование строк в Python
  4. Библиотека sh: удобные команды терминала
  5. Функция zip() в Python
  6. Оптимизация памяти с __slots__
  7. Декораторы в Python
  8. Модуль inspect: получение информации о объектах
  9. Метод rsub для пользовательских чисел
  10. Управление контекстом выполнения
  11. Работа с словарями в Python
  12. Преобразование регистра символов
  13. Переопределение метода __or__()
  14. inspect в Python: анализ кода
  15. Логирование с Loguru
  16. Наиболее частотные элементы с помощью Counter
  17. Особенности ключей словаря в Python
  18. Изменение регистра данных
  19. Создание namedtuple из словаря
  20. Форматирование строк в Python
  21. Копирование файлов с shutil()
  22. Повторение элементов в Python
  23. Подсчет элементов в Python
  24. Установка и использование pyshorteners
  25. Pillow: работа с изображениями
  26. Оформление кода на Python
  27. Хранение данных с помощью dataclasses
  28. Обмен значений переменных в Python
  29. Вызов внешних программ в Python с помощью sh
  30. Сортировка в Python
  31. Преобразование вложенного списка
  32. Метод gt в Python
  33. Типы возвращаемых значений в Python
  34. Определение относительного пути
  35. Оператор морж в Python 3.8
  36. Анализ кода — Python
  37. Группировка элементов в словарь
  38. Оператор «or» в Python
  39. Тестирование с responses
  40. Методы обработки строк в Python

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