转自:http://blog.sina.com.cn/s/blog_536c64470101a1h3.html
这个是用于:view返回到页面渲染之前增加一个处理,这个处理是为传回页面的Context增加参数。你可以为单独的view增加processor也可以为所有的view增加processor,相当于一种特殊的拦截器。
def add_information(request):
return {'information': request.session.get('information', '')}
2. 在settings.py里增加配置
'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
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. 当然也可以这样
return {'ip_address': request.META['REMOTE_ADDR']}
def some_view(request):
c = RequestContext(request, {
'foo': 'bar',
}, [ip_address_processor])
return HttpResponse(t.render(c))