偏った言語信者の垂れ流し

2015-05-30

[][]Djangoのメッセージフレームワークストレージについて

Djangoフレームワークには、利用者ごとに一度だけ表示するメッセージ(フラッシュメッセージ)を扱う機能(django.contrib.messages)が含まれています。

The messages framework | Django documentation | Django

メッセージは、複数のリクエストをまたいで表示することを想定しているため、Cookieセッションに保存する必要があります。

「メッセージはどこに保存されているの?」という疑問を持ったので、少し調べてみました。

ストレージバックエンド

どのようにしてメッセージを保存するかは、ストレージバックエンドに指定するクラスによって決まります。

バックエンドクラスは、Djangoの設定ファイルで切り替えられます(settings.MESSAGE_STORAGE)

Django 1.8では、django.contrib.messages.storage.fallback.FallbackStorageがデフォルトになっています。

Configuring the message engine

FallbackStorage

FallbackStorageは、最初にCookieStorageを使って、Cookieにメッセージを保存しようとします。CookieStorageに保存しきれなかったメッセージは、SessionStorageを使ってセッションに保存します。

class storage.fallback.FallbackStorage

Cookieに収まるサイズ(CookieStorageでは2KBが上限)のうちは、外部のストレージに依存しないで済むので、パフォーマンスは良さそう。

うまく作られていますね。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/nullpobug/20150530/1432977613