文档,更重要的是,一些代码示例将非常有用。我希望它不在受保护的脚本中,而是在进入现代包的代码中。
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)
在这种情况下,您仍然可以包含诸如 thepath
或其他 cookie 标志之类的选项,但该方法将覆盖max_age
andexpires
选项以确保 cookie 被浏览器删除。
尽管您可以使用 Zope 的SESSION
支持,但您确实需要考虑可伸缩性问题。例如,如果您使用 ZEO 或 RelStorage,您需要考虑如何跨集群共享会话数据。SESSION
如果可伸缩性成为问题,通常最好避免完全使用。
要设置 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 来实现这一点,这更容易。