PermissionsMixin и PermissionRequiredMixin - это одно и то же в Django 2.0? - PullRequest
0 голосов
/ 08 января 2019

Я хочу знать, имеет ли PermissionsMixin ту же функцию, что и PermissionRequiredMixin.

from django.contrib.auth.models import PermissionMixin
from django.contrib.auth.mixins import PermissionRequiredMixin

1 Ответ

0 голосов
/ 08 января 2019

Нет , 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(), который проверяет, есть ли у пользователя эти разрешения. Вы можете переопределить эти методы, например, если права доступа динамические (например, зависят от данных в базе данных).

...