Ответ
В Django для ограничения доступа к представлениям (views) используются два основных подхода в зависимости от типа представления:
-
Для представлений-функций (FBV): Декоратор
@login_requiredДекоратор применяется непосредственно к функции. Если пользователь не аутентифицирован, он будет перенаправлен на страницу входа.from django.contrib.auth.decorators import login_required from django.shortcuts import render @login_required def protected_view(request): # Логика, доступная только авторизованным пользователям return render(request, 'secret_template.html') -
Для представлений-классов (CBV): Миксин
LoginRequiredMixinМиксин добавляется в список базовых классов представления. Он должен стоять перед основным классом представления (например,ViewилиTemplateView).from django.contrib.auth.mixins import LoginRequiredMixin from django.views.generic import TemplateView class ProtectedView(LoginRequiredMixin, TemplateView): template_name = 'secret_template.html'
В обоих случаях, если пользователь не авторизован, Django перенаправит его на страницу входа. URL страницы входа по умолчанию — /accounts/login/, но его можно переопределить в файле settings.py с помощью параметра LOGIN_URL.