Как вы получаете и устанавливаете куки в Zope и Plone?
Вопрос
Документация и, что более важно, некоторые примеры кода были бы очень полезны. Я бы предпочел, чтобы это было не в защищенных скриптах, а в коде, который входит в современные пакеты.
Решение
Используйте метод 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 () метод code>, который делает это за вас:
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, это проще.