Курс 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. Создание новых функций с помощью functools.partial
  2. Логирование с Logzero: ротация файла
  3. Команда %dhist — список посещенных каталогов
  4. Бесконечные списки в Python
  5. OrderedDict — упорядоченный словарь
  6. Работа с дробями в Python
  7. Хэш-функции в Python
  8. Замена символов в строке
  9. Непрерывная проверка в Python
  10. Обрезка изображения с Pillow
  11. Списковый компрехеншен.
  12. Объединение коллекций в Python
  13. Структуры данных в Python
  14. Python: динамическая типизация и проверка типов
  15. Работа с файлами в Python
  16. Создание функций высшего порядка
  17. Работа с YAML в Python
  18. Именованные аргументы в Python
  19. Копирование в Python
  20. Передача аргументов в Python
  21. Преобразование данных в Python
  22. Создание пользовательской коллекции в Python
  23. Разделение строки с помощью re.split()
  24. Оптимизация гиперпараметров с Scikit Optimize
  25. Объединение кортежей в Python
  26. Распаковка элементов последовательности
  27. Поиск частых элементов в списке
  28. Работа с контекстными переменными
  29. Библиотека schedule: планировщик задач
  30. Основы Python
  31. Библиотека Rich: форматирование текста
  32. Работа с модулем bisect
  33. Генераторы по генератору
  34. Участие в LP стейкинге Waves
  35. Запуск внешнего кода в Jupyter
  36. Разделение списка на гнппы
  37. Операторы объединения в Python 3.9
  38. Измерение времени выполнения кода с помощью time
  39. split() — разделение строки
  40. Работа с YAML в Python
  41. Удаление специальных символов с помощью re.sub
  42. Списковое включение в Python
  43. Объединение списков в Python.
  44. Конкатенация строк с методом join()
  45. SciPy: широкий функционал для математических операций
  46. Итераторы в Python
  47. Обратное распространение ошибки

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