Атрибут COOKIES
Атрибут COOKIES класса HttpRequest представляет собой словарь, содержащий все файлы cookie, переданные клиентом в текущем HTTP-запросе. Ключи словаря - это имена cookie, а значения - их содержимое. Атрибут доступен только для чтения и автоматически заполняется Django при обработке запроса на основе заголовка Cookie.
Синтаксис
request.COOKIES.get('cookie_name', default_value)
# или
request.COOKIES['cookie_name']
Пример
Давайте получим значение cookie с именем 'theme' и применим соответствующую тему оформления для пользователя:
from 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':
"Тёмная тема активирована"
Пример
Давайте проверим наличие определённого cookie и выполним действие в зависимости от его значения:
from 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':
"Сессия активна: abcdef1234..."
Пример
Давайте обработаем случай, когда нужное cookie отсутствует, используя безопасный доступ:
from 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:
"Язык: ru, часовой пояс: UTC"
Смотрите также
-
метод
set_cookie,
который устанавливает файл cookie в ответе -
метод
delete_cookie,
который удаляет файл cookie из ответа -
метод
set_signed_cookie,
который устанавливает подписанный файл cookie -
декоратор
ensure_csrf_cookie,
который гарантирует отправку CSRF-токена в cookie