Курс 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. Создание OrderedDict
  3. Пустой оператор pass в Python
  4. Декоратор Ajax required
  5. Сумма элементов списка
  6. Лямбда-функции в цикле
  7. Docstring в Python
  8. split() — разделение строки
  9. Синхронизация доступа к ресурсам
  10. Управление ресурсами с контекстными менеджерами
  11. Получение ID процесса
  12. Оператор @ для умножения матриц
  13. Выборка чисел
  14. Сохранение Unicode в JSON
  15. Изменение элемента списка
  16. Создание панели меню Tkinter
  17. Вставка переменных в шаблоны Flask
  18. Создание словаря и множества
  19. Равенство и идентичность в Python
  20. Создание графики с черепахой
  21. Итераторы в Python
  22. Создание копии итератора
  23. Метод append() для списка
  24. Python Translator: создание локальных переводчиков
  25. Python: отсутствие точек с запятыми
  26. Взаимодействие с внешними процессами в Python
  27. Список импортированных модулей в Python
  28. Работа с комплексными числами
  29. Возврат нескольких значений
  30. Измерение времени выполнения
  31. Управление импортом в Python
  32. Экспорт функций в Python
  33. Просмотр атрибутов и методов класса
  34. Выражения-генераторы в Python
  35. Модуль math: константы π и e
  36. Методы __repr__ и __str__ в Python
  37. Работа с буфером обмена на Python
  38. Экспорт внешнего файла с помощью writefile
  39. Итераторы с потерямиZIP
  40. Установка и использование Telegram API в Python
  41. Метод __imod__ для Python
  42. Профилирование данных с Pandas
  43. Метод pop() списка
  44. Поиск уникальных элементов строкой в Python
  45. Оператор is в Python
  46. Оптимизация гиперпараметров в Python

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