← Назад к вопросам

Что такое PermissionRequiredMixin?

3.0 Senior🔥 81 комментариев
#DevOps и инфраструктура#Django

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

PermissionRequiredMixin: Контроль доступа в Django

PermissionRequiredMixin — это встроенный миксин (mixin) в Django, который используется для ограничения доступа к представлениям (views) на основе прав пользователя. Это ключевой компонент системы аутентификации и авторизации Django.

Что такое миксины?

Миксин — это класс, который предоставляет дополнительную функциональность к другому классу. В Django, миксины часто используются для class-based views (CBV). PermissionRequiredMixin проверяет, есть ли у пользователя определённые права, перед тем как позволить ему получить доступ к view.

Как работает PermissionRequiredMixin

Представление, использующее этот миксин, проверит права пользователя и либо покажет контент, либо вернёт 403 Forbidden ошибку:

from django.contrib.auth.mixins import PermissionRequiredMixin
from django.views.generic import DetailView
from .models import Article

class ArticleDetailView(PermissionRequiredMixin, DetailView):
    permission_required = 'articles.view_article'
    model = Article
    template_name = 'articles/detail.html'

Теперь только пользователи с правом 'articles.view_article' могут просмотреть детали статьи. Если пользователь не авторизован, он будет перенаправлен на страницу логина.

Множественные права

Можно требовать несколько прав одновременно. По умолчанию используется логика AND (требуются все права):

class AdminPanelView(PermissionRequiredMixin, TemplateView):
    permission_required = ('users.change_user', 'users.delete_user')
    template_name = 'admin/panel.html'

Встроенные миксины контроля доступа

  • LoginRequiredMixin — требует аутентификации
  • PermissionRequiredMixin — требует специфических прав
  • UserPassesTestMixin — проверяет пользовательскую функцию

Порядок наследования

Важно, чтобы миксин был расположен перед классом View в списке наследования. Правильный порядок обеспечивает, что проверка доступа произойдёт до выполнения основной логики view. Эта система предоставляет простой и мощный способ управления доступом к различным частям приложения.

Что такое PermissionRequiredMixin? | PrepBro