12

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

4

2 回答 2

20

使用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)

在这种情况下,您仍然可以包含诸如 thepath或其他 cookie 标志之类的选项,但该方法将覆盖max_ageandexpires选项以确保 cookie 被浏览器删除。

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

于 2009-06-24T14:01:18.077 回答
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 来实现这一点,这更容易。

于 2009-06-23T18:45:44.063 回答