Ответ 1
Используйте метод response.setCookie()
. Вы можете достичь объекта ответа через объект запроса. Последнее вы можете получить через получение (self.REQUEST
) или в представлениях, обратившись к объекту запроса переданного объекта, обычно через self.REQUEST
:
self.request.response.setCookie(name, value, **options)
где options
заканчиваются как дополнительные параметры файла cookie. Таким образом, для превращения cookie в несеансовый файл cookie требуется ключевое слово expires='date'
, ограничивающее путь к файлу cookie ключевым словом path='/somepath'
для метода setCookie()
. Здесь применяются обычные правила cookie браузера.
Чтобы истечь уже установленный в браузере файл cookie, вы можете использовать ключевое слово expires='date in the past'
, или вы можете использовать метод response.expireCookie()
, который делает это для вас:
self.request.response.expireCookie(name, **options)
В этом случае вы все равно можете включать такие параметры, как флаги path
или другие файлы cookie, но метод переопределяет параметры max_age
и expires
, чтобы убедиться, что файл cookie удален браузером.
Хотя вы можете использовать поддержку Zope SESSION
, вам действительно нужно продумать проблемы масштабируемости. Например, вам нужно подумать о том, как данные сеанса будут передаваться через кластер, если вы используете ZEO или RelStorage. Обычно лучше избегать использования SESSION
, если масштабируемость будет проблемой.