你如何在Zope和Plone中获取和设置cookie?

时间:2009-06-23 18:19:14

标签: plone zope

文档,更重要的是,一些代码示例非常有用。我希望这不是在受保护的脚本中,而是在进入现代包的代码中。

2 个答案:

答案 0 :(得分:19)

使用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_ageexpires选项,以确保浏览器删除Cookie

虽然您可以使用Zope的SESSION支持,但您确实需要考虑可伸缩性问题。例如,如果使用ZEO或RelStorage,则需要考虑如何在群集中共享会话数据。如果可伸缩性成为一个问题,通常最好避免完全使用SESSION

答案 1 :(得分:6)

要设置Cookie,请使用RESPONSE.setCookie。

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

cookie将在下一个请求中的REQUEST中结束。

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

您可以使用None作为值“删除”Cookie。

**请注意,大多数时候人们使用cookie来存储与会话有关的变量,你可以使用self.REQUEST.SESSION,这样更容易。