2009-06-23 12 views

答えて

19

response.setCookie()メソッドを使用します。リクエストオブジェクトを介してレスポンスオブジェクトにアクセスできます。 optionsは、などの追加クッキーのパラメータを終わる

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

:後者は、あなたが取得(self.REQUEST)を介して、またはビューに通常self.requestを経由して渡されたリクエスト・オブジェクトにアクセスすることで到達することができます。したがって、クッキーをセッション以外のクッキーに変換するには、expires='date'キーワードが必要です。クッキーをパスに限定するには、キーワードがsetCookie()メソッドに限定されています。通常のブラウザのクッキールールがここに適用されます。

は、すでにブラウザに設定されたCookieを期限切れにするには、expires='date in the past'キーワードを使用することができますか、あなたはあなたのためにこれを行いresponse.expireCookie()方法、使用することができます:あなたはまだ含めることができる。この場合、

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

pathや他のCookieフラグのようなオプションがありますが、このメソッドはmax_ageexpiresのオプションを上書きして、ブラウザによってCookieが確実に削除されるようにします。

ZopeのSESSIONサポートを使用することもできますが、スケーラビリティの問題を考える必要があります。たとえば、ZEOまたはRelStorageを使用する場合、セッションデータをクラスタ全体で共有する方法を考える必要があります。スケーラビリティが問題になる場合は、一般的にはSESSIONを使用しないことをお勧めします。

+0

この返答いただきありがとうございます! zopeアプリケーションごとに3〜4つのインスタンスを実行するので、どのインスタンスが当てはまるか心配する必要はありません。 – pydanny

6

クッキーを設定するには、RESPONSE.setCookieを使用します。

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

クッキーは、次のリクエストでREQUESTで終了します。

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

あなたは値としてNoneを使用することにより、クッキーを「削除します」。

**しかし、人々がクッキーを使うとき、それはセッションと関係がある変数を保存するためのものであり、そのためにself.REQUEST.SESSIONを使うことができます。

関連する問題