📝 Django

login_required: защита views

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

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

Декоратор для 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)

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

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

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

🔗 Похожие

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

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

📝

pytest-django: тестирование Django

Охватываемые темы: Установка, @pytest.mark.djangodb, Фикстуры, Тестирование views.

📅 30.06.2026 👁️ 132
📝

Django: Теги шаблонов

Теги шаблонов — это логика внутри HTML. В отличие от {{ переменная }}, которая только...

📅 30.06.2026 👁️ 81
📝

Django: Статические файлы

Статические файлы — CSS, JavaScript, изображения, шрифты. Django обрабатывает их особым образом: в разработке раздаёт...

📅 30.06.2026 👁️ 73

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!