解决方法
使用response.setCookie()方法.您可以通过请求对象到达响应对象.后者可以通过采集(self.REQUEST)或通过访问传入请求对象(通常通过self.request)访问视图:
self.request.response.setCookie(name,value,**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)
在这种情况下,您仍然可以包括路径或其他cookie标志等选项,但该方法将覆盖max_age和expires选项,以确保浏览器删除cookie.
虽然您可以使用Zope的SESSION支持,但您真的需要考虑可伸缩性问题.例如,如果您使用ZEO或RelStorage,则需要考虑如何在集群中共享会话数据.如果可扩展性将成为一个问题,通常最好避免使用SESSION.