Функция login

Функция login применяется для аутентификации пользователя и создания сессии в Django. Она принимает объект запроса и объект пользователя, после чего сохраняет идентификатор пользователя в сессии. Функция автоматически обрабатывает все необходимые операции для входа пользователя в систему, включая обновление последнего времени входа. Важно использовать эту функцию только после успешной проверки учетных данных с помощью функции authenticate.

Синтаксис

pythonfrom django.contrib.auth import login

login(request, user, backend=None)

Пример

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

pythonfrom django.contrib.auth import authenticate, login
from django.shortcuts import redirect, render
from django.contrib import messages

def user_login(request):
  if request.method == 'POST':
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(request, username=username, password=password)

    if user is not None:
      login(request, user)
      return redirect('dashboard')
    else:
      messages.error(request, 'Invalid username or password.')

  return render(request, 'registration/login.html')

Результат выполнения кода:

python"User successfully logged in"
"Redirected to dashboard"

Пример

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

pythonfrom django.contrib.auth import authenticate, login
from django.shortcuts import redirect, render

def user_login_with_backend(request):
  if request.method == 'POST':
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(request, username=username, password=password)

    if user is not None:
      login(request, user, backend='django.contrib.auth.backends.ModelBackend')
      return redirect('profile')

  return render(request, 'registration/login.html')

Результат выполнения кода:

python"User logged in with ModelBackend"
"Redirected to profile"

Пример

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

pythonfrom django.contrib.auth import authenticate, login
from django.shortcuts import redirect, render
from django.contrib.auth.models import User

def user_login_check_session(request):
  if request.method == 'POST':
    username = request.POST['username']
    password = request.POST['password']
    user = authenticate(request, username=username, password=password)

    if user is not None:
      login(request, user)
      is_authenticated = request.user.is_authenticated
      username = request.user.username

      print(f"User {username} is authenticated: {is_authenticated}")
      return redirect('dashboard')

  return render(request, 'registration/login.html')

Результат выполнения кода:

python"User john_doe is authenticated: True"

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

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