当您加载具有全局变量的页面(应该通过main / context_processors.py通过上下文设置和访问)时,渲染引擎会忽略global_item,就像它没有设置一样。 但是局部变量可以像往常一样正常工作。
views.py
:
def global_item(request):
time = datetime.now()
context = {
'time': time,
}
return render_to_response(
'main/global.html',
context
)
context_processors.py
:
def global_item(request):
global_item = "global item"
return {
'global_item': global_item,
}
global.html
:
<p>
{{ time }}<br>
{{ global_item }}
</p>
在渲染时global_item
:screenshot
另外,我在'main.context_processors.global_item',
中向'context_processors'
添加了一行settinds.py
。
为什么不起作用?
在GitHub上探索回购:https://github.com/yerohin/context_processors_test
答案 0 :(得分:1)
您没有使用RequestContext来呈现模板。请求处理器不能以正常的上下文运行。
不使用render_to_response
,而是使用render
快捷方式,该快捷方式将request
作为第一个参数并在内部使用RequestContext:
return render(request, 'main/global.html', context)
这与Django版本无关。