Ответ
LoginRequiredMixin — это встроенный класс-миксин в Django, предназначенный для ограничения доступа к представлениям (views) только для аутентифицированных пользователей. Он автоматически перенаправляет неаутентифицированных пользователей на страницу входа, обеспечивая безопасность и удобство управления доступом без дублирования кода.
Пример использования:
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import TemplateView
class ProtectedView(LoginRequiredMixin, TemplateView):
template_name = 'protected_page.html'
login_url = '/custom-login/' # Опционально: URL для перенаправления при отсутствии аутентификации
redirect_field_name = 'next' # Опционально: имя GET-параметра для сохранения исходного URL
Ключевые особенности:
- Порядок наследования:
LoginRequiredMixinдолжен быть унаследован до основного класса представления (например,TemplateView). - Настраиваемость: Можно переопределить
login_url(по умолчанию/accounts/login/) иredirect_field_name(по умолчаниюnext). - Применимость: Работает со всеми классами представлений на основе
View, такими какTemplateView,ListView,DetailViewи другими. - Альтернатива: Является классовой альтернативой декоратору
@login_required, используемому для функциональных представлений.