Функция logout

Функция logout применяется к объекту запроса и выполняет выход текущего аутентифицированного пользователя. Она удаляет идентификатор пользователя из сессии и очищает все данные, связанные с аутентификацией. Функция не возвращает никакого значения, а просто модифицирует состояние сессии. Для корректной работы функции требуется импортировать её из модуля django.contrib.auth.

Синтаксис

pythonfrom django.contrib.auth import logout

logout(request)

Пример . Использование в представлении

Давайте создадим представление для выхода пользователя из системы и перенаправления на главную страницу:

pythonfrom django.shortcuts import redirect
from django.contrib.auth import logout

def user_logout(request):
  logout(request)
  return redirect('home')

Пример . С использованием декоратора

Давайте создадим представление, которое доступно только аутентифицированным пользователям и выполняет выход с последующим перенаправлением на страницу входа:

pythonfrom django.shortcuts import redirect
from django.contrib.auth import logout
from django.contrib.auth.decorators import login_required

@login_required
def logout_view(request):
  logout(request)
  return redirect('login')

Пример . С очисткой сессионных данных

Давайте выполним выход пользователя и явно очистим все данные сессии:

pythonfrom django.shortcuts import redirect
from django.contrib.auth import logout

def clear_logout(request):
  logout(request)
  request.session.flush()
  return redirect('home')

Пример . Использование в шаблоне

Давайте создадим форму выхода, которую можно разместить в шаблоне для выполнения POST-запроса на выход:

pythonfrom django.shortcuts import redirect
from django.contrib.auth import logout
from django.views.decorators.csrf import csrf_protect

@csrf_protect
def logout_post(request):
  if request.method == 'POST':
    logout(request)
    return redirect('home')
  return redirect('home')

А в шаблоне можно разместить следующую форму:

html<form method="post" action="{% url 'logout' %}">
  {% csrf_token %}
  <button type="submit">Выйти</button>
</form>

Смотрите также

  • функция login,
    которая выполняет вход пользователя в систему
  • функция authenticate,
    которая проверяет учетные данные пользователя
  • декоратор login_required,
    который ограничивает доступ к представлениям
  • функция update_session_auth_hash,
    которая обновляет сессию при смене пароля