Zope and PloneでCookieを取得および設定するにはどうすればよいですか?
質問
ドキュメント、さらに重要なことに、いくつかのコード例が非常に役立ちます。これは保護されたスクリプトではなく、最新のパッケージに含まれるコードに含まれることを望みます。
解決
response.setCookie()
メソッドを使用します。要求オブジェクトを介して応答オブジェクトに到達できます。後者(取得( self.REQUEST
)を介して、または通常 self.request
を介して渡されたリクエストオブジェクトにアクセスすることでビュー内で到達できます:
self.request.response.setCookie(name, value, **options)
where options
は、追加のCookieパラメーターになります。したがって、Cookieを非セッションCookieにするには、 expires = 'date'
キーワードが必要です。Cookieをパスに制限するには、 path = '/ somepath'
キーワードを setCookie()
メソッド。通常のブラウザCookieルールがここに適用されます。
ブラウザに既に設定されているCookieを期限切れにするには、 expires = 'date in the past'キーワードを使用するか、
response.expireCookie()を使用しますcode>メソッド、これはあなたのためにこれを行います:
self.request.response.expireCookie(name, **options)
この場合、 path
または他のcookieフラグなどのオプションを含めることができますが、このメソッドは max_age
および expires
オプションをオーバーライドします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を使用する方が簡単です。