TurboGears –クッキーとセッション
多くの場合、ユーザーのブラウザに添付された単純なブラウジングデータを保持する必要があります。セッションは最も一般的に使用される手法です。セッションは、ディスクファイルやデータベースなどのより永続的な形式で保存する必要のないデータを表します。
ただし、TurboGearsのセッションデータは、ファイルシステム、データベース、またはハッシュされたCookie値によってバックアップできます。通常、少量のセッションデータがCookieに保持されますが、大量のセッションデータにはMemCacheが使用されます。
MemCacheはシステムレベルのデーモンです。キャッシュされたデータへの高速アクセスを提供し、非常にスケーラブルです。ただし、これは安全なサーバーでの使用のみを目的としているため、sysadminが保守および保護する必要があります。
セッション管理のビーカー
TurboGearsは、セッション管理にBeakerを使用します。ギアボックスによってクイックスタートされたプロジェクトは、デフォルトでハッシュCookieを使用してセッションデータを保存するように構成されています。
クライアントが接続するたびに、セッションミドルウェア(ビーカー)は、構成ファイルで定義されているCookie名を使用してCookieを検査します。Cookieが見つからない場合は、ブラウザに設定されます。それ以降のすべての訪問で、ミドルウェアはCookieを見つけて、それを利用します。
セッション管理を有効にするには、次のインポートステートメントによってセッションクラスをプロジェクトに組み込む必要があります-
from tg import session
データをセッション変数に保存するには-
session[‘key’] = value
session.save()
セッション変数を取得するには-
return session[‘key’]
キーをそのセッションに保存するには、セッションを明示的に保存する必要があることに注意してください。
ザ・ delete() セッションオブジェクトのメソッドは、すべてのユーザーセッションを消去します-
session.delete()
特定の実稼働環境ですべてのユーザーセッションを削除することは一般的ではありませんが、通常は、ユーザビリティまたは機能テストが行われた後にクリーンアップするために削除します。
以下に、セッションを示す簡単な例を示します。RootControllerクラスにはsetsession() セッション変数を設定するメソッド。
from hello.lib.base import BaseController
from tg import expose, session
class RootController(BaseController):
@expose()
def setsession(self):
session['user'] = 'MVL'
session.save()
str = "<b>sessionVariable set to "+session['user']
str = str+"<br><a href = '/getsession'>click here to retrieve</a></b>"
return str
@expose()
def getsession(self):
return "<b>value of session variable retrieved " +session['user'] +"</b>"
入る http://localhost:8080/setsession
ブラウザ内のリンクはにつながります http://localhost:8080/getsession セッション変数を取得して表示します-