在Django中创建我自己的上下文处理器
我已经到了需要将某些变量传递到所有视图的地步(主要是自定义身份验证类型变量)。
有人告诉我编写自己的上下文处理器是执行此操作的最佳方法,但是我遇到了一些问题。
我的设置文件如下所示
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_responsedef 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中创建我自己的上下文处理器 的全部内容, 来源链接: utcz.com/qa/407231.html