Django template context processors

转自:http://blog.sina.com.cn/s/blog_536c64470101a1h3.html

这个是用于:view返回到页面渲染之前增加一个处理,这个处理是为传回页面的Context增加参数。你可以为单独的view增加processor也可以为所有的view增加processor,相当于一种特殊的拦截器。


1.       建立自己的context_processors.py
def add_information(request):

return {'information': request.session.get('information', '')}


2.       在settings.py里增加配置


TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth',
    #'django.core.context_processors.auth',
    'django.core.context_processors.csrf',
    "django.core.context_processors.debug", #debug for sql clause show",
    'context_processors.add_information'

)


3.       把view里的Context替换成RequestContex


def agencyCustomer(request,agencyId):
    if not isCustomerAdmin(request):     
        return HttpResponseRedirect('/admin/customer/noRight/') 
    t = loader.get_template('app/agencyCustomer.html')
    items = Agency.objects.all()
    agencyCustomer = None
    customerId = None
    if 'customerId' in request.GET:
        customerId = request.GET['customerId']
        agencyCustomer = AgencyCustomer.objects.get(id=customerId)
        form = AgencyCustomerForm(initial={'cCusCode': agencyCustomer.cCusCode, 'cCusName':agencyCustomer.cCusName})
    else:
        form = AgencyCustomerForm()
    c = RequestContext(request,{'agencyId':agencyId,'agencyCustomer':agencyCustomer,'items':items,'form':form,'customerId':customerId})
   

return HttpResponse(t.render(c))


4.       当然也可以这样


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))


为某个视图单独指定processor
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值