Метод has_perm
Метод has_perm применяется к экземпляру класса User и возвращает True, если пользователь имеет указанное разрешение, и False в противном случае. Метод проверяет разрешения, назначенные пользователю напрямую, через группы, а также суперпользователю автоматически дает True для всех разрешений. В качестве аргумента метод принимает строку с именем разрешения в формате "app_label.codename" или "app_label.permission_name", а также опциональный параметр obj для проверки разрешений на конкретный объект.
Синтаксис
user.has_perm(perm, obj=None)
Пример
Давайте проверим, имеет ли пользователь разрешение на добавление статей:
from django.contrib.auth.models import User
from myapp.models import Article
# Получаем пользователя
user = User.objects.get(username="john_doe")
# Проверяем разрешение на добавление статьи
has_perm = user.has_perm("myapp.add_article")
print(has_perm)
Результат выполнения кода:
True
Пример
Давайте проверим несколько разрешений для пользователя:
from django.contrib.auth.models import User
# Получаем пользователя
user = User.objects.get(username="jane_doe")
# Проверяем различные разрешения
can_add = user.has_perm("myapp.add_article")
can_change = user.has_perm("myapp.change_article")
can_delete = user.has_perm("myapp.delete_article")
can_view = user.has_perm("myapp.view_article")
print(f"Add: {can_add}")
print(f"Change: {can_change}")
print(f"Delete: {can_delete}")
print(f"View: {can_view}")
Результат выполнения кода:
"Add: True"
"Change: False"
"Delete: False"
"View: True"
Пример
Давайте проверим разрешение суперпользователя:
from django.contrib.auth.models import User
# Получаем суперпользователя
superuser = User.objects.get(username="admin")
# Суперпользователь имеет все разрешения
has_perm = superuser.has_perm("myapp.add_article")
print(has_perm)
Результат выполнения кода:
True
Пример
Давайте проверим разрешение у анонимного пользователя:
from django.contrib.auth.models import AnonymousUser
# Анонимный пользователь не имеет разрешений
anonymous = AnonymousUser()
has_perm = anonymous.has_perm("myapp.view_article")
print(has_perm)
Результат выполнения кода:
False
Смотрите также
-
метод
has_perms,
который проверяет список разрешений -
метод
has_module_perms,
который проверяет разрешения для целого модуля -
декоратор
permission_required,
который ограничивает доступ к представлениям -
декоратор
user_passes_test,
который выполняет пользовательскую проверку