Курс 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. Тип CodeType в Python.
  2. Генераторы в Python
  3. Поиск индекса элемента
  4. Создание GUI с Tkinter: Entry
  5. Переопределение метода xor в Python
  6. Область видимости переменных
  7. Функция enumerate() — Python
  8. Глобальные переменные в Python
  9. Метод округления чисел
  10. Контроль точности вывода чисел
  11. Тип данных TypeVarTuple
  12. Экспорт данных в файл.
  13. Регистрация на TenChat
  14. Область видимости переменных
  15. Добавление элементов в список: append() vs extend()
  16. Запуск файлового сервера
  17. Гибкие функции Python
  18. Асинхронное программирование с asyncio
  19. Работа со строками в Python
  20. Статическая типизация в Python
  21. Библиотека sh: удобные команды терминала
  22. Печать месячного календаря
  23. Список переменных в Python
  24. Оценка выражений генератора в Python
  25. Метод Event.wait() в Python
  26. Howdoi — получение ответов из терминала
  27. Расчет времени выполнения программы
  28. Retrying в Python: повторные вызовы
  29. Приближение чисел в Python
  30. Модуль itertools: эффективная работа с итераторами
  31. Перевод двоичного кода в целое число
  32. Разделение строки с помощью re.split()
  33. Очистка строки в Python
  34. Установка и обучение ChatterBot
  35. Обработка исключений в Python
  36. Инициализация объекта
  37. Вычисление времени выполнения
  38. Введение в PyTorch
  39. Нахождение разницы между списками в Python
  40. Множественное назначение в Python
  41. Динамические маршруты во Flask
  42. Группировка элементов в словарь
  43. Метод __call__ в Python

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