Метод set_cookie

Метод set_cookie применяется к объекту HttpResponse и позволяет установить cookie в заголовках ответа. Метод принимает ключ и значение cookie, а также дополнительные параметры для настройки времени жизни, пути, домена, флагов безопасности и других атрибутов. Cookie устанавливаются в браузере клиента и отправляются обратно на сервер при следующих запросах.

Синтаксис

pythonresponse.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 в представлении:

pythonfrom django.http import HttpResponse

def set_user_cookie(request):
    response = HttpResponse("Cookie has been set")
    response.set_cookie('user_id', '123')
    return response

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

python"Cookie has been set"

Пример

Давайте установим cookie с временем жизни в 3600 секунд (один час) и флагом 'httponly':

pythonfrom 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

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

python"Session cookie set"

Пример

Давайте установим cookie с указанием конкретной даты истечения через 7 дней:

pythonfrom 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

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

python"Cookie with expiration date"

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

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