我已经到了需要将某些变量传递到所有视图的地步(主要是自定义身份验证类型变量)。
有人告诉我编写自己的上下文处理器是执行此操作的最佳方法,但是我遇到了一些问题。
我的设置文件如下所示
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吗?
RequestContext
例如:
def test_view(request): return render_to_response('template.html')
上面的视图将不使用中列出的上下文处理器TEMPLATE_CONTEXT_PROCESSORS。确保你提供的RequestContext是这样的:
TEMPLATE_CONTEXT_PROCESSORS
def test_view(request): return render_to_response('template.html', context_instance=RequestContext(request))