在Django中创build我自己的上下文处理器

我已经到了需要将某些variables传递给所有视图(主要是自定义身份validationtypesvariables)的地步。

我被告知写我自己的上下文处理器是这​​样做的最好方法,但我有一些问题。

我的设置文件看起来像这样

TEMPLATE_CONTEXT_PROCESSORS = ( "django.contrib.auth.context_processors.auth", "django.core.context_processors.debug", "django.core.context_processors.i18n", "django.core.context_processors.media", "django.contrib.messages.context_processors.messages", "sandbox.context_processors.say_hello", ) 

正如你所看到的,我有一个名为“context_processors”的模块和一个名为“say_hello”的函数。

看起来像

 def say_hello(request): return { 'say_hello':"Hello", } 

我是否有权假定我现在可以在我的意见中做以下事情?

 {{ say_hello }} 

现在,这在我的模板中没有任何东西。

我的观点看起来像

 from django.shortcuts import render_to_response def test(request): return render_to_response("test.html") 

你写的上下文处理器应该工作。 问题在你看来。

你是积极的,你的看法是使用RequestContext呈现?

例如:

 def test_view(request): return render_to_response('template.html') 

上面的视图不会使用TEMPLATE_CONTEXT_PROCESSORS列出的上下文处理器。 确保你提供了一个RequestContext像这样:

 def test_view(request): return render_to_response('template.html', context_instance=RequestContext(request)) 

根据django文档,您可以使用render作为快捷方式,而不是使用context_instance参数render_to_response:

或者,使用render()快捷方式,该快捷方式与调用render_to_response()的context_instance参数相同,该参数强制使用RequestContext。

如果使用Django的render_to_response()快捷方式填充字典内容的模板,默认情况下(而不是RequestContext )将传递一个Context实例。 要在您的模板呈现中使用RequestContext ,请使用render()快捷方式,该快捷方式与使用context_instance参数render_to_response()的调用相同,该参数强制使用RequestContext