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

StackOverflow https://stackoverflow.com/questions/1034252

  •  06-07-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

Используйте метод 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 last' или response.expireCookie () , который делает это за вас:

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

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

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

Другие советы

Для установки файлов 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 в качестве значения.

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top