Google App Engine用フレームワークKayのソースコードを眺めていたら、flash機能を発見しました。
flash機能は値を一度だけ取り出すことが出来るセッションのようなもの。
普通のセッション変数は削除するまで値は保持されますが、flashは一度値を取り出すとflashから削除されて、次に取り出すときには値がなくなっています。
一度だけ表示するメッセージなどを格納するとき、メッセージを削除する手間が省けて便利です。
flash機能はミドルウェアとして提供されています。
settings.pyのMIDDLEWARE_CLASSESに登録します。
settings.py
MIDDLEWARE_CLASSES = (
'kay.utils.flash.FlashMiddleware',
)
flashを使うには、kay.utils.flashをインポートします。
from kay.utils import flash
flashに値を設定するには、flash.set_flash(値)とします。
flash.set_flash('Hello World')
flashから値を取り出すには、flash.get_flash()とします。
message = flash.get_flash()
flashの使用例です。
myapp/views.py
from kay.utils import flash
def index(request):
message = flash.get_flash()
return render_to_response('myapp/index.html',
{'message': message})
def index2(request):
flash.set_flash('Hello World')
return redirect(url_for('myapp/index'))
index2にアクセスするとindexにリダイレクトされ、flashに格納された’Hello World’の文字が表示されます。
その後リロードすると、flashから値が取り除かれているため、’Hello World’は表示されません。