我有一个使用flatpages和其他不带request
对象的构造的应用程序。这会导致base.html出现问题。这是一个简单的例子。
如果我想要“欢迎{{request.user.username}}之类的话!”在每个页面的顶部,实现这一目标的最佳方法是什么?
答案 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)