12. セッションを使用する

12.1. 概要

Kay には匿名セッションの仕組があります。この仕組を有効にすると全ての request オブジェクトには自動的に session 属性が付加されます。pickle できるデータならなんでもこのセッションに格納できます。

12.2. 設定

セッションを使用するには kay.sessions アプリケーション を settings.INSTALLED_APPSkay.sessions.middleware.SessionMiddlewaresettings.MIDDLEWARE_CLASSES にセットする必要があります。また settings.SESSION_STORE の設定でセッションをどのように保存するか選べます。有効な値は kay.sessions.sessionstore.GAESessionStorekay.sessions.sessionstore.SecureCookieSessionStore です。

SESSION_STORE = 'kay.sessions.sessionstore.GAESessionStore'
#SESSION_STORE = 'kay.sessions.sessionstore.SecureCookieSessionStore'

INSTALLED_APPS = (
  'kay.sessions',
  'myapp',
)

# ...

MIDDLEWARE_CLASSES = (
  'kay.sessions.middleware.SessionMiddleware',
  'kay.auth.middleware.GoogleAuthenticationMiddleware',
)

GAESessionStore では、セッションデータは Datastore に保存され、セッ ションIDのみがユーザー側の Cookie に渡されます。また SecureCookieSessionStore ではユーザー側の Cookie にセッションデータ が保存されます。 SecureCookieSessionStore を使用した場合には、セッ ションに保存するデータは id 等の保存のみにして、大きなデータを保存する 事は避けてください。

12.3. デコレーター

かつて kay.sessions.decorators.no_session というデコレーターがあり ましたが、今は使用する必要はありません。 request.session の値は遅延 評価されるので、使わない場合は datastore/memcache のアクセスは発生しま せん。

12.4. 古いセッションを破棄する

GAESessionStore を使用する場合には、期限切れの古いセッションを破棄する必要があります。古いセッションを破棄するためのビューが kay.sessions.views.purge_old_sessions にあります。このビューはデフォルトでは /sessions/purge_old_sessions に結び付けられています。古いセッションを消したければ、このビューを cron か何かで定期的に呼出す必要があります。下記はサンプルの cron 設定です:

cron.yaml

cron:
- description: purge old session data
  url: /sessions/purge_old_sessions
  schedule: every 1 hours

12.5. セッションにデータを保存する

request.session を辞書のように扱ってください。下記は単純なカウンターの例です:

def index(request):
  count = request.session.get('count', 0) + 1
  request.session['count'] = count
  #...
  #...

目次

前のトピックへ

11. 認証の設定

次のトピックへ

13. フォームの使用方法

このページ