潘飞

潘飞的博客

他的个人主页  他的博客

django上下文

潘飞  2009年08月25日 星期二 14:42 | 2435次浏览 | 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哲思注册吗?现在 注册 !
電波系山寨文化科学家

回复 電波系山寨文化科学家  2009年08月25日 星期二 15:17

不懂,路过,帮顶.

0条回复

暂时没有评论

Zeuux © 2024

京ICP备05028076号