Курс 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. Удаление файлов с shutil.os.remove()
  3. Работа с Enum в Python3.
  4. Извлечение чисел из текста
  5. Цикл while в Python
  6. Ускорение кода с помощью векторизации
  7. Вычисление натурального логарифма в NumPy
  8. Запуск внешнего кода в Jupyter
  9. Метод count() для списка
  10. Многострочные комментарии в Python
  11. Идентификатор объекта в Python
  12. Создание панели меню Tkinter
  13. Форматирование строк с f-строками
  14. Обмен значений переменных в Python
  15. Удаление элемента по индексу
  16. Генераторы в Python
  17. f-строки в формате строк
  18. Изменения в обработке логических значений
  19. Lambda-функция в Python: использование с map() и sum()
  20. Переопределение метода __pow__
  21. Декоратор проверки активности
  22. Модуль Operator в Python
  23. Упрощенный вывод данных в Python
  24. Выключение компьютера с помощью Python
  25. Удаление дубликатов из списка с помощью dict.fromkeys
  26. Docstring в Python
  27. Изменение логики работы с временем
  28. Шаблоны Flask: условия и циклы
  29. Декоратор @override
  30. Удаление элемента из списка в Python
  31. Модуль pprint: улучшение вывода данных
  32. Логические операторы в Python
  33. Создание списков в Python
  34. Метод __irshift__ для побитового сдвига вправо
  35. Возвращение нескольких значений
  36. Хранение данных
  37. Проблемы с именами переменных
  38. Итераторы с потерямиZIP
  39. Инверсия списка и строки
  40. Создание веб-приложения с Flask
  41. Поиск подстроки в строке
  42. Модуль pprint
  43. Переопределение метода sub

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