潘飞 2009年08月25日 星期二 14:42 | 2517次浏览 | 1条评论
所谓的上下文就是一个名值对-----------
Context的子类:RequestContext
django有一个特别的上下文类,django.template.RequestContext,和普通的django.template.Context有些许不同。第一个不同是它接收HttpRequest作为第一参数。比如:
c = RequestContext(request,{'foo':'bar'})
第二个不同是它自动地加了一些变量,这些变量是根据你的TEMPLATE_CONTEXT_PROCESSORS设置来设定的。
组成TEMPLATE_CONTEXT_PROCESSORS的东西都是可调用的--叫做上下文处理器--它接收一个请求对象作为参数并返回一个会被并入上下文的字典。默认的,TEMPLATE_CONTEXT_PROCESSORS被设定成如下的样子:
(
"django.core.context_processors.auth",
"django.core.context_processors.debug",
"django.core.context_processors.i18n",
"django.core.context_processors.media"
)
每个处理器会按照顺序被应用。这意味着如果这里面有重复的,后面的就会覆盖前面的。
当然你也可以RequestContext一列附加的处理器,使用可选的,第三个位置参数,processors。在下面的例子中,RequestContext实例获得一个ip_address变量:
def ip_address_processor(request):
return {'ip_address':request.META['REMOTE_ADDR']}
def some_view(request):
............
c = RequestContext(request,{'foo':'bar'},[ip_address_processor])
return HttpResponse(t.render(c))
Zeuux © 2024
京ICP备05028076号
回复 電波系山寨文化科学家 2009年08月25日 星期二 15:17