Курс 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. Оператор @ для умножения матриц
  4. Создание циклической ссылки
  5. Основные операции с Numpy
  6. Функции map() и reduce() в Python
  7. Возведение в квадрат с помощью itertools
  8. Python Метод sleep() времени
  9. Многострочные комментарии в Python
  10. GitHub в Telegram: подписка на уведомления
  11. Defaultdict в Python
  12. Атрибуты класса и экземпляра
  13. *args и **kwargs в Python
  14. Зарезервированные слова в Python
  15. Метод join() для объединения элементов
  16. Измерение времени выполнения кода с использованием time
  17. Вывод с переменной через запятую
  18. Enum в Python
  19. Модуль Antigravity в Python 3
  20. Вычисление разности множеств в Python
  21. Замена текста с re.sub()
  22. Переопределение метода delitem в Python
  23. Работа с файловой системой в Python
  24. Преобразование range в итератор
  25. Обмен переменными в Jupyter
  26. Оператор assert в Python
  27. Объединение, распаковка и деструктуризация
  28. Прокачанный трейсинг ошибок
  29. Построение графиков в терминале с bashplotlib
  30. Загрузка постов Instagram
  31. Lambda Functions in Python
  32. Очистка данных с Pandas
  33. Генераторы в Python
  34. Обработка ошибок ввода данных
  35. Извлечение данных из JSON
  36. Форматирование строк в Python
  37. Работа с часовыми поясами в Python.
  38. Подсчет элементов с помощью Counter
  39. Безопасный доступ к значениям словаря
  40. Аргумент по умолчанию
  41. Освоение Python
  42. Работа со словарями
  43. Удаление дубликатов из списка
  44. split() без разделителя

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