在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
。