自定义上下文处理器在Django 1.8.2中不起作用

时间:2015-07-05 11:27:24

标签: python django

当您加载具有全局变量的页面(应该通过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_itemscreenshot

另外,我在'main.context_processors.global_item',中向'context_processors'添加了一行settinds.py

为什么不起作用?

在GitHub上探索回购:https://github.com/yerohin/context_processors_test

1 个答案:

答案 0 :(得分:1)

您没有使用RequestContext来呈现模板。请求处理器不能以正常的上下文运行。

不使用render_to_response,而是使用render快捷方式,该快捷方式将request作为第一个参数并在内部使用RequestContext:

return render(request, 'main/global.html', context)

这与Django版本无关。