Метод has_perms
Метод has_perms применяется к объекту пользователя
и возвращает True, если пользователь обладает
всеми переданными разрешениями, и False -
в противном случае. Этот метод полезен для проверки
доступа пользователя к нескольким операциям одновременно.
В качестве аргумента принимает список строк с именами
разрешений в формате "app_label.codename".
Необязательный параметр obj позволяет проверить
разрешения на конкретном объекте.
Синтаксис
user.has_perms(perm_list, obj=None)
Пример
Давайте проверим, есть ли у пользователя разрешения на добавление и изменение статей:
from 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)
Результат выполнения кода:
"True"
Пример
Проверим наличие разрешений на конкретном объекте статьи:
from 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)
Результат выполнения кода:
"False"
Пример
Проверим наличие разрешений у суперпользователя:
from 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)
Результат выполнения кода:
"True"
Смотрите также
-
метод
has_perm,
который проверяет наличие одного разрешения у пользователя -
метод
has_module_perms,
который проверяет наличие разрешений в конкретном приложении -
декоратор
permission_required,
который проверяет разрешения при входе во view-функцию -
класс
Group,
который позволяет группировать разрешения и назначать их пользователям