Курс 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. Переворот последовательности
  3. Именование переменных в Python
  4. Модуль xkcd: добавление юмора в Python
  5. Декораторы классов
  6. Игра «Камень, ножницы, бумага» — Python
  7. Оператор in в Python
  8. Работа с очередями в Python
  9. Конвертация коллекций в Python.
  10. Удаление дубликатов из списка
  11. Удаление символов новой строки в Python.
  12. Фильтрация данных в Python.
  13. Срез списка в Python
  14. Возведение в квадрат с помощью itertools
  15. Отладка в командной строке
  16. Модуль itertools: комбинации и перестановки
  17. Объединение кортежей в Python
  18. Работа с необработанными строками
  19. Векторизация в Python с NumPy.
  20. split() — разделение строки
  21. Оптимизация строк в Python
  22. Пропуск строк в файле с itertools
  23. Функции-генераторы в Python
  24. Создание уникального множества
  25. Названия столбцов в Python таблицах
  26. Измерение времени выполнения кода
  27. Работа с географическими данными в Python
  28. Тайное преобразование типа ключа
  29. Деление в Python
  30. Переопределение метода sub
  31. Concrete Paths — метод .with_suffix()
  32. JSON в Python: модуль, dump, dumps, load
  33. Оценка точности модели
  34. Счетчик в Python: most_common()
  35. Работа с collections в Python.
  36. Принципы программирования
  37. Работа с GitHub в Telegram
  38. Вложенные циклы в Python
  39. Оптимизация интернирования строк
  40. Проблема с изменяемыми аргументами
  41. %pinfo: получение информации об объекте
  42. Просмотр файла в Jupyter Noteboo
  43. Определение основы слова с showballstemmer
  44. Приоритет операций в Python
  45. JMESPath в Python

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