2012-04-18 28 views
1

メッセージミドルウェアをDjangoで使用しようとしていますが、ビューでレンダリングされません。Djangoのメッセージミドルウェアがテンプレートに表示されません

views.py

messages.success(request, 'Test message.') 
return render_to_response('base.html') 

template.html

<ul class="messages"> 
    {% for message in messages %} 
    <li class="{{ message.tags }}">{{ message }}</li> 
    {% endfor %} 
</ul> 

私はビューで次の操作を行います:私が持っているもの

for message in messages.get_messages(request): 
    print message 

それは毎回のためのメッセージを出力します私は最後にこの関数を使用して以来、私はビューを呼び出したので、間違いなくメッセージをどこかに保存します。テンプレートには送信されません。

追加情報:

  • Djangoのバージョン=(1、2、3、 '最終'、0)
  • IはTEMPLATE_CONTEXT_PROCESSORSに 'django.contrib.messages.context_processors.messages' を追加しました。注意:Django 1.2以降、TEMPLATE_CONTEXT_PROCESSORSは存在しませんでしたが、これを追加しました。私はそれが正常に動作していない可能性があり、これは問題かもしれないと思うが、私はそれが正しく構成されているかどうかを確認する方法を知らない。
  • 私はそれに続いてhttps://docs.djangoproject.com/en/dev/ref/contrib/messages/に従った。

答えて

3

あなたは、テンプレートにテンプレートのコンテキストプロセッサを利用できるようにする(render_to_responseがデフォルトで使用する)だけではなく、ContextRequestContextでテンプレートをレンダリングする必要があります。 optional arguments section of the render_to_response docsをチェックアウト後、変更:助けたが、私は私がTEMPLATE_CONTEXT_PROCESSORSに「django.contrib.messages.context_processors.messages」を追加した場合、それは必要ではなかったと思っ

return render_to_response('base.html', context_instance=RequestContext(request)) 
+0

おかげで、。とにかく私は両方とも必要ですか? – olofom

+0

これを 'TEMPLATE_CONTEXT_PROCESSORS'に追加すると、それが有効になっていることを意味します。テンプレートで 'TEMPLATE_CONTEXT_PROCESSORS'で使われているすべてのコンテキストプロセッサを実際に利用できるようにするには、ビュー内の' RequestContext'を使う必要があります。 –

+2

また、 'render'ショートカットをチェックしてください:https://docs.djangoproject.com/en/dev/topics/http/shortcuts/#render – Dor

関連する問題