Метод has_perms

Метод has_perms применяется к объекту пользователя и возвращает True, если пользователь обладает всеми переданными разрешениями, и False - в противном случае. Этот метод полезен для проверки доступа пользователя к нескольким операциям одновременно. В качестве аргумента принимает список строк с именами разрешений в формате "app_label.codename". Необязательный параметр obj позволяет проверить разрешения на конкретном объекте.

Синтаксис

pythonuser.has_perms(perm_list, obj=None)

Пример

Давайте проверим, есть ли у пользователя разрешения на добавление и изменение статей:

pythonfrom django.contrib.auth.models import User
from myapp.models import Article

user = User.objects.get(username="john")
perms = ["blog.add_article", "blog.change_article"]
has_perms = user.has_perms(perms)

print(has_perms)

Результат выполнения кода:

python"True"

Пример

Проверим наличие разрешений на конкретном объекте статьи:

pythonfrom django.contrib.auth.models import User
from myapp.models import Article

user = User.objects.get(username="john")
article = Article.objects.get(pk=1)
perms = ["blog.change_article", "blog.delete_article"]
has_perms = user.has_perms(perms, obj=article)

print(has_perms)

Результат выполнения кода:

python"False"

Пример

Проверим наличие разрешений у суперпользователя:

pythonfrom django.contrib.auth.models import User

user = User.objects.get(username="admin")
perms = ["blog.add_article", "blog.change_article", "blog.delete_article"]
has_perms = user.has_perms(perms)

print(has_perms)

Результат выполнения кода:

python"True"

Смотрите также

  • метод has_perm,
    который проверяет наличие одного разрешения у пользователя
  • метод has_module_perms,
    который проверяет наличие разрешений в конкретном приложении
  • декоратор permission_required,
    который проверяет разрешения при входе во view-функцию
  • класс Group,
    который позволяет группировать разрешения и назначать их пользователям