Djangoのメッセージフレームワークの使い方

Djangoにはクッキーベース(セッションも)のメッセージフレームワークが用意されています(The messages framework)。これを使うと、リダイレクト先でエラーメッセージを表示させたりするのに便利です。使い方は以下の通りです。

  1. 「settigns.py」の「MESSAGE_STORAGE」に「'django.contrib.messages.storage.cookie.CookieStorage'」を設定(Cookieベースの場合)
  2. 「settings.py」の「MIDDLEWARE_CLASSES」に「'django.contrib.messages.middleware.MessageMiddleware'」を追加
  3. 「settings.py」の「INSTALLED_APPS」に「'django.contrib.messages'」を追加(※ デフォルトで有効になっているため、変更していなければ必要ありません)
  4. viewで「from django.contrib import messages」の関数「messages.add_message(request, messages.INFO, 'Hello world.')」を使ってメッセージを追加
  5. テンプレートで、「messages」「message」「message.tags」を使ってメッセージを表示

※ 注意点
テンプレートの描画に「render_to_response」を利用している場合、メッセージフレームワークが動作しません。なぜならば、メッセージフレームワークはテンプレートのレンダリングのコンテキストを「RequestContext」にする必要があり、「render_to_respones」のコンテキストは「RequestContext」ではなく「Context」 になっているためです。

これを回避するには「render_to_response」のコンテキストを明示的に指定する必要があります。

例)

return render_to_response("template.html", {},
        context_instance=RequestContext(request))

参考: The Django template language: For Python programmers

この記事が役に立った場合、シェアしていただけると励みになります!!