DjangoのRequestContextに関する注意点

先日書いた「メッセージフレームワークの使い方」にて、メッセージフレームワークを利用する場合は「django.template.RequestContext」を使う必要があることを記載しました。この「RequestContext」について注意すべき点があったのでメモしておきます。

DJangoのメッセージフレームワークを使うには、「TEMPLATE_CONTEXT_PROCESSORS」に「django.contrib.messages.context_processors.messages」を含める必要があります(※ 前回記載漏れ)。その場合に「RequestContext」を設定すると自動的に、同コンテキストに「user」「perms」などの値が設定されることになります。これらを自分で設定すると上書きされるため、どこかに影響を及ぼす可能性があるのでやめた方がいいと思われます。

例)

return render_to_response("test.html", {}, context_instance=RequestContext(request))
(test.htmlで) {{ user }}
↓
画面には「AnonymousUser」と表示される。
return render_to_response("test.html", {"user": "USER",}, context_instance=RequestContext(request))
(test.htmlで) {{ user }} 
↓
画面には「USER」と表示される。 (上書きされてしまった。)

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