Как вставить какой-либо текст во весь контекст django с использованием промежуточного программного обеспечения django
этот мой код промежуточного кода:
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
это settings.py:
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.request',
)
MIDDLEWARE_CLASSES = (
...
'middleware.BeforeFilter',
)
и вид:
#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)
html:
{{a}}fffff{{ss}}
но он не показывает {{ss}}:
aaaafffff
так как я могу показать:
aaaafffffssssssss
как вставить какой-либо текст во весь контекст django с использованием промежуточного программного обеспечения django,
поэтому я не могу использовать текст каждый раз,
спасибо
Ответы
Ответ 1
Чтобы соответствовать вашей первоначальной цели, я не думаю, что требуется среднее значение BeforeFilter. Нам нужен всего лишь шаблонный контекстный процессор.
Запишите процессор контекста следующим образом:
#file: context_processors.py
def sample_context_processor(request):
return {'ss':'ssssssssss'} #or whatever you want to set to variable ss
затем добавьте обработчик контекста в список TEMPLATE_CONTEXT_PROCESSORS
#file: settings.py
TEMPLATE_CONTEXT_PROCESSORS = (
'myproject.context_processors.sample_context_processor',
)
Ответ 2
Вам нужно указать, что вы получаете доступ к request
в шаблоне. Если вы просто {{ss}}
, переменная не существует, поскольку она является атрибутом request
(вы сделали request.ss = 'ssssssssss'
, правильно?). Так что {{request.ss}}
в вашем шаблоне должен работать.