Вопрос по – Как вы получаете и устанавливаете куки в Zope и Plone?

12

Documentation, и что более важно, некоторые примеры кода были бы очень полезны. Я бы предпочел, чтобы это было не в защищенных скриптах, а в коде, который входит в современные пакеты.

Ваш Ответ

2   ответа
6

Чтобы установить куки, вы используете RESPONSE.setCookie.

>>> self.REQUEST.RESPONSE.setCookie('cookiename', 'cookievalue', expires='Wed, 22 June 2009 12:00:00 GMT')

Cookie будет в запросе в следующем запросе.

>>> self.REQUEST['cookiename']
'cookievalue'

Вы «удаляете» cookie, используяNone как значение.

** Обратите внимание, что в большинстве случаев, когда люди используют куки, они хранят переменные, связанные с сессиями, и вы можете использовать для этого self.REQUEST.SESSION, это проще.

19

Использоватьresponse.setCookie() метод. Вы можете добраться до объекта ответа через объект запроса. Последний вы можете достичь через приобретение self.REQUEST) или в представлениях путем доступа к переданному объекту запроса, обычно черезself.request:

self.request.response.setCookie(name, value, **options)

гдеoptions заканчиваются как дополнительные параметры 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 параметры, чтобы гарантировать, что куки удалены браузером.

Хотя ты можешь использовать Zope'sSESSION поддержка, вам действительно нужно продумать проблемы масштабируемости. Например, вам нужно продумать, как данные сеанса будут распределяться по кластеру, если вы используете ZEO или RelStorage. Обычно желательно избегать использованияSESSION вообще, если масштабируемость будет проблемой.

Спасибо за этот ответ! Мы запускаем 3-4 экземпляра на приложение zope, поэтомун Мне очень важно беспокоиться о том, в какой момент мы попадаем. pydanny

Похожие вопросы