Zope and PloneでCookieを取得および設定するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1034252

  •  06-07-2019
  •  | 
  •  

質問

ドキュメント、さらに重要なことに、いくつかのコード例が非常に役立ちます。これは保護されたスクリプトではなく、最新のパッケージに含まれるコードに含まれることを望みます。

役に立ちましたか?

解決

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()メソッド、これはあなたのためにこれを行います:

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を使用する方が簡単です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top