Как вставить какой-либо текст во весь контекст 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}} в вашем шаблоне должен работать.