Django中的消息中间件不在模板中显示

时间:2012-04-18 08:24:47

标签: python django django-templates django-views

我正在尝试在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 version =(1,2,3,'final',0)
  • 我将'django.contrib.messages.context_processors.messages'添加到TEMPLATE_CONTEXT_PROCESSORS。注意:我没有TEMPLATE_CONTEXT_PROCESSORS,即使它应该是自Django 1.2以来,所以我只是添加它。我想它可能无法正常工作,这可能是问题所在,但我不知道如何检查它是否配置正确。
  • 我跟着https://docs.djangoproject.com/en/dev/ref/contrib/messages/进行了设置。

1 个答案:

答案 0 :(得分:3)

您需要使用RequestContext而不是Context(默认情况下render_to_response使用)呈现模板,以使模板中的上下文处理器可用。查看optional arguments section of the render_to_response docs然后更改:

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