Нет , PermissionsMixin
- это миксин для моделей, PermissionRequiredMixin
- миксин для смешивания в представлениях.
Я хочу знать, имеет ли PermissionsMixin
ту же функцию, что и PermissionRequiredMixin
.
Это не функции, а классы . PermissionsMixin
- это миксин для моделей .
PermissionsMixin
[Django-doc] - это миксин для моделей Django. Если вы добавите миксин к одной из ваших моделей, он добавит поля, специфичные для объектов с разрешениями, таких как is_superuser
, groups
и user_permissions
. Он также предоставляет набор служебных методов, чтобы проверить, имеет ли модель с этим миксином заданное разрешение (например, с has_perm
[Django-doc] . Типичная модель, которая подклассов этот миксин User
модель [Django-doc] .
PermissionRequiredMixin
[Django-doc] mixin, с другой стороны, - это mixin, который предоставляет удобный способ проверки , если пользователь вошел в систему, имеет необходимые разрешения. Например:
from django.contrib.auth.mixins import PermissionRequiredMixin
class MyView(<b>PermissionRequiredMixin</b>, View):
permission_required = ('polls.can_open', 'polls.can_edit')
Здесь мы таким образом определяем View
, но только пользователи с этими разрешениями могут получить доступ к представлению.
Этот миксин реализует метод get_permission_required()
, который генерирует итерацию разрешений для проверки, и has_permission()
, который проверяет, есть ли у пользователя эти разрешения. Вы можете переопределить эти методы, например, если права доступа динамические (например, зависят от данных в базе данных).