📝 Django

login_required: защита views

P
Автор
PyLand Team
📅
Опубликовано
30.06.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
245
🌿
Уровень
Средний

Django позволяет закрыть представление от неавторизованных пользователей декоратором для функций или миксином для классов.

Декоратор для FBV

from django.contrib.auth.decorators import login_required

@login_required
def my_profile(request):
    return render(request, 'profile.html', {'user': request.user})

# Кастомный URL для входа
@login_required(login_url='/custom/login/')
def secret_view(request):
    ...

Если пользователь не авторизован — редирект на settings.LOGIN_URL с параметром ?next=/current-url/.

LoginRequiredMixin для CBV

from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic import ListView

class TaskListView(LoginRequiredMixin, ListView):
    model = Task
    template_name = 'tasks/list.html'
    login_url = '/accounts/login/'        # куда редиректить
    redirect_field_name = 'next'          # имя GET-параметра

Миксин должен идти первым в списке родителей.

settings.LOGIN_URL

# settings.py
LOGIN_URL = '/accounts/login/'           # по умолчанию
LOGIN_REDIRECT_URL = '/'                 # после успешного входа
LOGOUT_REDIRECT_URL = '/accounts/login/' # после выхода

Проверка в коде view

def my_view(request):
    if not request.user.is_authenticated:
        return redirect('login')
    # дальнейший код только для авторизованных

UserPassesTestMixin — кастомные условия

from django.contrib.auth.mixins import UserPassesTestMixin

class AdminOnlyView(UserPassesTestMixin, ListView):
    model = Task

    def test_func(self):
        return self.request.user.is_staff  # только staff

    def handle_no_permission(self):
        return redirect('home')  # кастомный редирект при отказе

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

Поиск в Django

Поиск в Django можно начать с простых ORM-фильтров, а для ранжирования и полнотекстового поиска использовать...

📅 30.06.2026 👁️ 279
📝

Swagger документация с drf-spectacular

drf-spectacular генерирует OpenAPI 3.0 схему и Swagger UI для DRF.

📅 30.06.2026 👁️ 561
📝

settings.py: настройки Django

settings.py — центральный конфигурационный файл Django-проекта.

📅 30.06.2026 👁️ 315
🎓 Продолжить обучение

В каких курсах используется этот материал

Перейдите к курсу, чтобы закрепить материал на практике.

Django RequestLab: от HTTP до безопасного продакшена Открыть программу курса