Ответ
В 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
.