Функция login
Функция login применяется для аутентификации пользователя и создания сессии в Django.
Она принимает объект запроса и объект пользователя, после чего сохраняет идентификатор пользователя в сессии.
Функция автоматически обрабатывает все необходимые операции для входа пользователя в систему,
включая обновление последнего времени входа. Важно использовать эту функцию только после успешной проверки учетных данных с помощью функции authenticate.
Синтаксис
from django.contrib.auth import login
login(request, user, backend=None)
Пример
Давайте выполним вход пользователя после успешной аутентификации в представлении:
from 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')
Результат выполнения кода:
"User successfully logged in"
"Redirected to dashboard"
Пример
Давайте выполним вход пользователя с указанием бэкенда аутентификации:
from 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')
Результат выполнения кода:
"User logged in with ModelBackend"
"Redirected to profile"
Пример
Давайте выполним вход пользователя и проверим состояние сессии после входа:
from 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')
Результат выполнения кода:
"User john_doe is authenticated: True"
Смотрите также
-
функция
authenticate,
которая проверяет учетные данные пользователя -
функция
logout,
которая завершает сессию пользователя -
декоратор
login_required,
который ограничивает доступ к представлениям для аутентифицированных пользователей -
класс
User,
который представляет модель пользователя в Django