2009-06-23 8 views

Respuesta

19

Utilice el método response.setCookie(). Puede alcanzar el objeto de respuesta a través del objeto de solicitud. Este último se puede llegar a través de la adquisición (self.REQUEST), o en vistas al acceder a la solicitud objeto pasado-en, por lo general a través de self.request:

self.request.response.setCookie(name, value, **options) 

donde options terminan parámetros de la cookie como extras. Por lo tanto, convertir una cookie en una cookie que no sea de sesión requiere una palabra clave expires='date', limitar la cookie a una ruta es una palabra clave path='/somepath' al método setCookie(). Las reglas habituales de cookies del navegador se aplican aquí.

Cumplir una cookie haya definido en el navegador, se podría utilizar una palabra clave expires='date in the past', o puede utilizar el método response.expireCookie(), que lo hace por usted:

self.request.response.expireCookie(name, **options) 

En este caso, todavía se puede incluir opciones como path u otras banderas de cookies, pero el método anulará las opciones max_age y expires para garantizar que el navegador elimine la cookie.

Aunque podría usar el soporte SESSION de Zope, realmente necesita pensar en los problemas de escalabilidad. Por ejemplo, debe pensar cómo se compartirán los datos de sesión en un clúster si usa ZEO o RelStorage. En general, es preferible evitar el uso de SESSION si la escalabilidad va a ser un problema.

+0

Gracias por esta respuesta! Funcionamos con 3-4 instancias por aplicación zope así que * no * tener que preocuparse de qué instancia estamos golpeando es algo muy bueno. – pydanny

6

Para configurar las cookies, usa RESPONSE.setCookie.

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

La cookie terminará en la SOLICITUD en la próxima solicitud.

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

Usted "eliminar" la cookie utilizando None como un valor.

** Sin embargo, tenga en cuenta que la mayoría de las veces cuando las personas usan cookies es para almacenar las variables que tienen que ver con las sesiones, y puede usar self.REQUEST.SESSION para eso, es más fácil.

Cuestiones relacionadas