Курс 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. Настройка шрифта и цвета в Tkinter
  3. Моржовый оператор в Python 3.8
  4. Numpy: объединение массивов
  5. Метод classmethod
  6. Метод get для словаря
  7. Расчет времени выполнения кода
  8. Модуль xkcd: загрузка комиксов
  9. Курсы Яндекс Практикум
  10. Декоратор total_ordering для класса Point
  11. Контекстный менеджер в Python
  12. Принципы Zen of Python
  13. Распаковка элементов последовательности
  14. Конвертация коллекций в Python.
  15. Игра «Виселица» на Python
  16. Философия Python
  17. Метод gt в Python
  18. Расчет времени выполнения
  19. Beautiful Soup — извлечение данных из HTML
  20. Обратное распространение ошибки
  21. Форматирование строк в Python
  22. Определение наиболее частого элемента с помощью collections.Counter
  23. Замена атрибута в именованном кортеже
  24. Работа с getopt
  25. Управление пакетами с pip
  26. Принципы программирования
  27. Тестирование модели в PyTorch
  28. Итераторы в Python
  29. Применение функции к каждому элементу списка
  30. Измерение времени выполнения кода с использованием time
  31. Добавление элемента к кортежу
  32. Генерация строк с .join()
  33. Функция product() из itertools
  34. Вычисление фазы комплексного числа
  35. Нахождение хеша для бесконечности и NaN в Python
  36. Параллельные вычисления в Python
  37. Добавление Progressbar в Python
  38. Декораторы в Python
  39. Форматирование строк в Python
  40. Обход элементов в Python
  41. Работа с модулем bisect
  42. Оптимизация строк в Python
  43. Генераторы в Python
  44. Метод pop() списка
  45. Асинхронное программирование с asyncio
  46. Избегайте двойного подчеркивания
  47. Поиск кода

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