В Django встроена гибкая система аутентификации и управления разрешениями, которая позволяет назначать пользователям различные права доступа через группы и индивидуальные разрешения.
Группа (Group) в Django — это логический контейнер для объединения пользователей. Группам можно назначать разрешения, а затем добавлять пользователей в эти группы. Это позволяет управлять правами доступа более удобно и централизованно.
Создать группу можно через Django Admin или программно:
from django.contrib.auth.models import Group
# Создание группы
group, created = Group.objects.get_or_create(name='Editors')
from django.contrib.auth.models import User
user = User.objects.get(username='example_user')
group = Group.objects.get(name='Editors')
# Добавляем пользователя в группу
user.groups.add(group)
user.groups.remove(group)
if user.groups.filter(name='Editors').exists():
print("Пользователь в группе 'Editors'")
Разрешения (Permission) определяют, какие действия может выполнять пользователь в системе. Django автоматически создает разрешения для каждой модели (add
, change
, delete
, view
).
Код разрешения | Описание |
---|---|
add_modelname |
Разрешение на создание объекта |
change_modelname |
Разрешение на изменение объекта |
delete_modelname |
Разрешение на удаление объекта |
view_modelname |
Разрешение на просмотр объекта |
from django.contrib.auth.models import Permission
from django.contrib.contenttypes.models import ContentType
from myapp.models import MyModel
content_type = ContentType.objects.get_for_model(MyModel)
permission = Permission.objects.create(
codename='custom_permission',
name='Мое кастомное разрешение',
content_type=content_type,
)
group.permissions.add(permission)
user.user_permissions.add(permission)
if user.has_perm('myapp.custom_permission'):
print("У пользователя есть это разрешение")
- Django автоматически создает 4 разрешения для каждой модели в
INSTALLED_APPS
. - Разрешения можно применять как к группам, так и индивидуально к пользователям.
- Проверка разрешений выполняется через
user.has_perm()
. - Группы помогают централизованно управлять разрешениями для нескольких пользователей.
Группы и разрешения — мощный механизм для управления доступом в Django. Использование групп упрощает администрирование, а назначение разрешений позволяет гибко контролировать доступ к данным.