РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
347 of 818 menu

Атрибут session

Атрибут session класса HttpRequest предоставляет доступ к сессионным данным текущего пользователя. Сессия представляет собой словареподобный объект, который позволяет сохранять и извлекать данные между разными запросами одного пользователя. Данные сессии хранятся на сервере, а клиенту передается идентификатор сессии в виде cookie. Атрибут доступен только в том случае, если в приложении включено middleware для сессий.

Синтаксис

request.session[key] = value value = request.session.get(key, default) del request.session[key]

Пример

Давайте сохраним количество посещений страницы пользователем:

from django.http import HttpResponse def counter_view(request): # Увеличиваем счетчик посещений request.session['visits'] = request.session.get('visits', 0) + 1 return HttpResponse(f"Visits: {request.session['visits']}")

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

"Visits: 1" "Visits: 2" "Visits: 3"

Пример

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

from django.http import JsonResponse from django.views.decorators.csrf import csrf_exempt import json @csrf_exempt def cart_view(request): if request.method == 'POST': data = json.loads(request.body) product_id = data.get('product_id') # Получаем корзину из сессии cart = request.session.get('cart', []) cart.append(product_id) request.session['cart'] = cart return JsonResponse({'status': 'added'}) # GET запрос - возвращаем корзину cart = request.session.get('cart', []) return JsonResponse({'cart': cart, 'count': len(cart)})

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

{"cart": [1, 2, 3], "count": 3}

Пример

Давайте проверим, вошел ли пользователь в систему с помощью сессии:

from django.http import HttpResponse from django.contrib.auth import authenticate, login def login_view(request): if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') user = authenticate(request, username=username, password=password) if user is not None: login(request, user) request.session['user_logged'] = True request.session['username'] = username return HttpResponse("Login successful") else: return HttpResponse("Invalid credentials") # Проверяем статус входа is_logged = request.session.get('user_logged', False) return HttpResponse(f"Logged in: {is_logged}")

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

"Logged in: True" "Login successful"

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

  • атрибут user,
    который предоставляет доступ к объекту пользователя в запросе
  • атрибут COOKIES,
    который содержит все cookie-файлы, отправленные клиентом
  • атрибут GET,
    который содержит все GET-параметры запроса
  • атрибут POST,
    который содержит все POST-параметры запроса
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить