Метод set_cookie
Метод set_cookie применяется к объекту HttpResponse и позволяет установить cookie в заголовках ответа. Метод принимает ключ и значение cookie, а также дополнительные параметры для настройки времени жизни, пути, домена, флагов безопасности и других атрибутов. Cookie устанавливаются в браузере клиента и отправляются обратно на сервер при следующих запросах.
Синтаксис
response.set_cookie(key, value='', max_age=None, expires=None, path='/', domain=None, secure=False, httponly=False, samesite=None)
Параметры метода
Метод set_cookie принимает следующие параметры:
- key - обязательный параметр, имя cookie;
- value - значение cookie, по умолчанию пустая строка;
- max_age - максимальное время жизни cookie в секундах, после которого оно будет удалено;
- expires - дата истечения срока действия cookie в формате строки или объекта datetime;
- path - путь, для которого cookie действительно, по умолчанию корневой путь;
- domain - домен, для которого cookie действительно;
- secure - флаг, указывающий, что cookie должно передаваться только по HTTPS;
- httponly - флаг, запрещающий доступ к cookie через JavaScript;
- samesite - определяет политику SameSite для защиты от CSRF-атак.
Пример
Давайте установим простую cookie с именем 'user_id' и значением 123 в представлении:
from django.http import HttpResponse
def set_user_cookie(request):
response = HttpResponse("Cookie has been set")
response.set_cookie('user_id', '123')
return response
Результат выполнения кода:
"Cookie has been set"
Пример
Давайте установим cookie с временем жизни в 3600 секунд (один час) и флагом 'httponly':
from django.http import HttpResponse
from datetime import datetime, timedelta
def set_session_cookie(request):
response = HttpResponse("Session cookie set")
response.set_cookie(
'session_token',
'abc123',
max_age=3600,
httponly=True,
secure=True
)
return response
Результат выполнения кода:
"Session cookie set"
Пример
Давайте установим cookie с указанием конкретной даты истечения через 7 дней:
from django.http import HttpResponse
from datetime import datetime, timedelta
def set_expiring_cookie(request):
response = HttpResponse("Cookie with expiration date")
expires_date = datetime.now() + timedelta(days=7)
response.set_cookie(
'preference',
'dark_mode',
expires=expires_date,
path='/settings'
)
return response
Результат выполнения кода:
"Cookie with expiration date"
Смотрите также
-
метод
delete_cookie,
который удаляет cookie из ответа -
метод
set_signed_cookie,
который устанавливает подписанную cookie -
атрибут
COOKIES,
который содержит все полученные cookie -
декоратор
ensure_csrf_cookie,
который гарантирует установку CSRF-токена