2009-06-23 7 views

Répondre

19

Utilisez la méthode response.setCookie(). Vous pouvez atteindre l'objet de réponse via l'objet de requête. Ce dernier vous pouvez joindre par acquisition (self.REQUEST), ou dans les vues en accédant à l'objet de la demande passé dans, habituellement par l'intermédiaire self.request:

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

options finissent comme supplémentaires des paramètres du cookie. Ainsi, transformer un cookie en un cookie non-session nécessite un mot-clé expires='date', en limitant le cookie à un chemin est un mot-clé path='/somepath' à la méthode setCookie(). Les règles de cookie habituelles du navigateur s'appliquent ici.

Expirer un cookie déjà défini dans le navigateur, vous pouvez soit utiliser un mot-clé expires='date in the past', ou vous pouvez utiliser la méthode response.expireCookie(), qui fait pour vous:

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

Dans ce cas, vous pouvez toujours inclure des options telles que path ou d'autres indicateurs de cookie, mais la méthode remplacera les options max_age et expires pour s'assurer que le cookie est supprimé par le navigateur.

Bien que vous puissiez utiliser le support SESSION de Zope, vous devez vraiment réfléchir aux problèmes d'évolutivité. Par exemple, vous devez réfléchir à la manière dont les données de session seront partagées sur un cluster si vous utilisez ZEO ou RelStorage. Il est généralement préférable d'éviter d'utiliser SESSION si l'évolutivité pose problème.

+0

Merci pour cette réponse! Nous courons avec 3-4 instances par application Zope donc * pas * devoir s'inquiéter de l'instance que nous frappons est une très bonne chose. – pydanny

6

Pour configurer les cookies, vous utilisez RESPONSE.setCookie.

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

Le cookie se retrouvera dans la demande à la prochaine demande.

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

Vous "supprimez" le cookie en utilisant None comme valeur. Notez cependant que la plupart du temps, lorsque les gens utilisent des cookies, c'est pour stocker des variables qui ont trait aux sessions, et que vous pouvez utiliser self.REQUEST.SESSION pour cela, c'est plus simple.

Questions connexes