Django Academy · Урок

login_required и защита представлений

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

Урок 4 из 413 шагов

«login_required и защита представлений» — бесплатный урок Django Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Django Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Django Academy содержит 4 уроков всего.

Некоторые страницы являются закрытыми

Панель управления или страница профиля должны открываться только вошедшим в систему пользователям. Django позволяет просто и единообразно защищать такие представления. 🚧

Знакомство с login_required

Декоратор login_required защищает представление: анонимные посетители автоматически перенаправляются на страницу входа.

from django.contrib.auth.decorators import login_required

Добавление декоратора к представлению

Разместите @login_required прямо над функцией представления. Одной этой строки достаточно, чтобы закрыть страницу.

@login_required
def dashboard(request):
    return render(request, "dashboard.html")

Куда отправляются посетители

При отказе в доступе Django перенаправляет пользователя на адрес из настройки адреса входа. Укажите его в настройках, чтобы перенаправление вело на страницу входа.

LOGIN_URL = "/accounts/login/"

Следующий параметр

Перенаправление добавляет к запросу значение следующего адреса с исходным URL, поэтому после входа пользователь возвращается на нужную страницу. 🎯

Защита представлений на основе классов

Для представлений на основе классов используйте LoginRequiredMixin вместо декоратора. Укажите его первым среди базовых классов.

from django.contrib.auth.mixins import LoginRequiredMixin

Порядок примеси важен

LoginRequiredMixin должен находиться перед универсальным представлением в определении класса, иначе защита не будет применена.

class Dashboard(LoginRequiredMixin, TemplateView):
    template_name = "dashboard.html"

Проверка внутри представления

Иногда Вам нужен ручной контроль. Прочитайте признак аутентификации пользователя запроса и самостоятельно выберите ветвь вместо использования декоратора.

if not request.user.is_authenticated:
    return redirect("login")

Разрешения дают больше возможностей

Чтобы требовать конкретное право, а не просто любой вход, используйте проверку разрешения. Она проверяет наличие у пользователя указанного разрешения.

from django.contrib.auth.decorators import permission_required

Скрытие ссылок в шаблонах

В шаблонах оборачивайте закрытые ссылки в проверку аутентификации пользователя, чтобы гости даже не видели кнопки, которыми не могут воспользоваться.

Многоуровневая защита

Скрытие ссылки не является настоящей защитой. Всегда защищайте и само представление, поскольку пользователи могут напрямую ввести любой URL.

Быстрая проверка

Какая настройка определяет, куда login_required отправляет анонимных пользователей?

Итоги: защита представлений

Вы закрыли страницы с помощью login_required и LoginRequiredMixin, указали адрес входа и научились защищать представления, а не просто скрывать ссылки. ✅

Можно начать бесплатно

Изучай Python с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
30
Уроки
120

Часто задаваемые вопросы

Урок «login_required и защита представлений» бесплатный?

Да — полный текст урока «login_required и защита представлений» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Django Academy, подпишись на CoddyKit PRO. Курс Django Academy содержит 4 уроков всего.

Чему я научусь в уроке «login_required и защита представлений»?

Ограничивайте доступ к страницам для аутентифицированных пользователей Ты практикуешь Django Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Django Academy?

Предыдущий опыт не требуется. Django Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.

Сколько времени занимает урок «login_required и защита представлений»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Django Academy?

Да. Каждый урок Django Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Модель User и authenticate()
  2. login, logout и представления аутентификации
  3. Регистрация с UserCreationForm
  4. login_required и защита представлений
← Назад к Django Academy