Курс 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. Иерархия классов в Python
  5. Функция zip() в Python
  6. Оптимизация памяти с __slots__
  7. Работа с deque в Python
  8. Псевдонимы в Python
  9. Конвертация коллекций в Python.
  10. Проверка кортежей.
  11. Изменяемые и неизменяемые объекты
  12. Анализ кода — Python
  13. Изменение списка срезами
  14. Управление пакетами с pip
  15. Лямбда-функции для min/max
  16. Работа с геоданными с помощью geopy
  17. Вычисление натурального логарифма в NumPy
  18. Инверсия списков и строк в Python
  19. Создание вложенных циклов for
  20. Метод append() для списка
  21. Модуль pprint
  22. Нахождение самого длинного слова в списке с помощью max
  23. Копирование списков в Python
  24. Аннотации типов в Python
  25. Использование html-скриптов в Jupyter Notebook
  26. Сравнение объектов в Python
  27. Комментарии в Python
  28. Генераторы в Python
  29. Измерение времени выполнения кода
  30. Группировка элементов в словарь
  31. Константы в модуле cmath
  32. Основные операции с Numpy
  33. Расчет времени выполнения
  34. Сортировка в Python
  35. Введение в Python
  36. Методы обработки строк в Python
  37. Асинхронное программирование с asyncio
  38. Оптимизация гиперпараметров в Python
  39. Преобразование списков в словарь
  40. Отладка в командной строке
  41. Разделение списка на гнппы
  42. Моржовый оператор в Python 3.8
  43. Удаление файлов и папок в Python
  44. Делегирование в Python
  45. Глобальные переменные в Python
  46. Лямбда-функции в defaultdict
  47. Хэш-функции и метод цепочек
  48. Замена символов в строке
  49. Проверка существования переменной с оператором :=

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