this my middleware code :
from django.conf import settings from django.template import RequestContext class BeforeFilter(object): def process_request(self, request): settings.my_var = 'Hello World' request.ss = 'ssssssssss' return None def process_response(self, request, response): return response
this is the settings.py:
TEMPLATE_CONTEXT_PROCESSORS = ( 'django.core.context_processors.request', ) MIDDLEWARE_CLASSES = ( ... 'middleware.BeforeFilter', )
and the view is :
#coding:utf-8 from django.conf import settings from django.shortcuts import render_to_response from django.http import HttpResponse from django.template import RequestContext def index(request): context = RequestContext(request) context['a'] = 'aaaa' return render_to_response('a.html',context)
the html is :
{{a}}fffff{{ss}}
but it not show {{ss}}:
aaaafffff
so how do i show :
aaaafffffssssssss
how to insert some text in all django context using django middleware,
so that i cant use to insert the text everytime ,
thanks
Advertisement
Answer
To meet your initial goal, I do not think the BeforeFilter middle ware is required. What we need is just a template context processor.
Write a context processor as following:
#file: context_processors.py def sample_context_processor(request): return {'ss':'ssssssssss'} #or whatever you want to set to variable ss
then add the context processor to TEMPLATE_CONTEXT_PROCESSORS list
#file: settings.py TEMPLATE_CONTEXT_PROCESSORS = ( 'myproject.context_processors.sample_context_processor', )