Атрибут COOKIES

Атрибут COOKIES класса HttpRequest представляет собой словарь, содержащий все файлы cookie, переданные клиентом в текущем HTTP-запросе. Ключи словаря - это имена cookie, а значения - их содержимое. Атрибут доступен только для чтения и автоматически заполняется Django при обработке запроса на основе заголовка Cookie.

Синтаксис

pythonrequest.COOKIES.get('cookie_name', default_value)
# или
request.COOKIES['cookie_name']

Пример

Давайте получим значение cookie с именем 'theme' и применим соответствующую тему оформления для пользователя:

pythonfrom django.http import HttpResponse

def set_theme_view(request):
  theme = request.COOKIES.get('theme', 'light')
  
  if theme == 'dark':
    return HttpResponse("Тёмная тема активирована")
  elif theme == 'light':
    return HttpResponse("Светлая тема активирована")
  else:
    return HttpResponse(f"Неизвестная тема: {theme}")

Результат выполнения кода при наличии cookie 'theme'='dark':

python"Тёмная тема активирована"

Пример

Давайте проверим наличие определённого cookie и выполним действие в зависимости от его значения:

pythonfrom django.http import HttpResponse

def check_session_cookie(request):
  session_id = request.COOKIES.get('sessionid')
  
  if session_id:
    return HttpResponse(f"Сессия активна: {session_id[:10]}...")
  else:
    return HttpResponse("Сессия не найдена")

Результат выполнения кода при наличии cookie 'sessionid':

python"Сессия активна: abcdef1234..."

Пример

Давайте обработаем случай, когда нужное cookie отсутствует, используя безопасный доступ:

pythonfrom django.http import HttpResponse

def get_user_preferences(request):
  # Безопасное получение значений
  language = request.COOKIES.get('lang', 'ru')
  timezone = request.COOKIES.get('tz', 'UTC')
  
  return HttpResponse(
    f"Язык: {language}, часовой пояс: {timezone}"
  )

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

python"Язык: ru, часовой пояс: UTC"

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

  • метод set_cookie,
    который устанавливает файл cookie в ответе
  • метод delete_cookie,
    который удаляет файл cookie из ответа
  • метод set_signed_cookie,
    который устанавливает подписанный файл cookie
  • декоратор ensure_csrf_cookie,
    который гарантирует отправку CSRF-токена в cookie