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

Для использования кода JavaScript на разных языках я обнаружил, что одинарные кавычки постоянно требуют меньше подстройки кода.

Двойные кавычки поддерживают многострочные строки.

12
задан pydanny 23 June 2009 в 18:19
поделиться

2 ответа

Используйте метод 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)

В этом случае вы все равно можете включить такие параметры, как путь или другие флаги cookie, но этот метод переопределит параметры max_age и expires , чтобы файл cookie был удален браузером.

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

self.request.response.expireCookie(name, **options)

В этом случае вы все равно можете включить такие параметры, как путь или другие флаги файлов cookie, но этот метод переопределит параметры max_age и expires , чтобы гарантировать, что cookie удаляется браузером.

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

self.request.response.expireCookie(name, **options)

В этом случае вы все равно можете включить такие параметры, как путь или другие флаги файлов cookie, но этот метод переопределит параметры max_age и expires , чтобы гарантировать, что cookie удаляется браузером.

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

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

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

19
ответ дан 2 December 2019 в 06:09
поделиться

Для установки файлов cookie вы используете RESPONSE.setCookie.

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

Файл cookie будет помещен в ЗАПРОС следующего запроса.

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

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

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

6
ответ дан 2 December 2019 в 06:09
поделиться