Django base.html中的动态变量

时间:2009-11-15 21:07:29

标签: django authentication orm

我有一个使用flatpages和其他不带request对象的构造的应用程序。这会导致base.html出现问题。这是一个简单的例子。

如果我想要“欢迎{{request.user.username}}之类的话!”在每个页面的顶部,实现这一目标的最佳方法是什么?

2 个答案:

答案 0 :(得分:5)

Flatpages在rendering templates中使用RequestContext。这里有更多关于RequestContext的内容。可以说,您应该能够编写一个Context Processor来将request.user添加到每个模板的上下文中。像这样:

def user(request):
    """A context processor that adds the user to template context"""
    return {
        'user': request.user
    }

然后您将在settings.py中添加到现有的TEMPLATE_CONTEXT_PROCESSORS

TEMPLATE_CONTEXT_PROCESSORS = TEMPLATE_CONTEXT_PROCESSORS + (
    'context_processors.user',
)

您只需确保所有视图也将RequestContext绑定到其模板:

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

这是关于Context Processors的一个很好的read。它们是一个非常有用的功能。

答案 1 :(得分:2)