Курс 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. Генераторы словарей и множеств
  3. Аргумент по умолчанию
  4. Фильтрация списка от «ложных» значений
  5. Функции any() и all() в Python
  6. Метод Self в Python
  7. Декораторы в Python
  8. Метод setdefault() в Python
  9. Python reversed() функция
  10. Создание новых списков в Python
  11. Создание коллекций из генератора
  12. Оператор Walrus в Python 3.8
  13. Декораторы в Python
  14. Блок else в обработке исключений
  15. Оператор in для Python
  16. Поиск элементов BeautifulSoup
  17. Локальные переменные.
  18. Проверка надежности пароля на Python
  19. Метод enumerate() в Python
  20. Метод init в Python
  21. 9 уловок для чистого кода
  22. Проектирование Singleton с метаклассом
  23. Преобразование числа в список цифр
  24. Склеивание строк без циклов
  25. Создание списка дат
  26. Основы Python за 14 дней
  27. Пропуск начальных строк с помощью dropwhile()
  28. Настройка вывода NumPy
  29. Объединение списков с использованием itertools.chain
  30. Расчет времени выполнения
  31. Форматирование данных с помощью pprint
  32. Получение обратного списка чисел
  33. Метод __irshift__ для побитового сдвига вправо
  34. Установка и использование TensorFlow
  35. Поиск с библиотекой Google
  36. Именованные аргументы в Python
  37. Упрощение работы с JSON-данными в Python
  38. Управление асинхронными задачами на Python.
  39. Хранение переменных в словаре.
  40. Операторы сравнения в Python
  41. Работа с файлами и директориями в Python.
  42. Объединение словарей в Python
  43. Различия символов в Python
  44. Доступ к локальным переменным
  45. Метод matmul для умножения матриц
  46. Оценка точности модели
  47. Работа с типами данных в Python с помощью pydantic.
  48. Форматирование объектов с модулем pprint

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