Как вставить текст во весь контекст Django, используя промежуточное программное обеспечение Django - PullRequest
12 голосов
/ 12 мая 2011

это мой код промежуточного программного обеспечения:

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,

так что я не могу использовать для вставки текста каждый раз,

спасибо

Ответы [ 2 ]

26 голосов
/ 12 мая 2011

Для достижения вашей первоначальной цели я не думаю, что требуется промежуточное программное обеспечение 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 голосов
/ 12 мая 2011

Вам необходимо указать, что вы обращаетесь к request в шаблоне.Если вы просто {{ss}}, то переменная не существует, поскольку она является атрибутом request (вы сделали request.ss = 'ssssssssss', верно?).Так что {{request.ss}} в вашем шаблоне, и он должен работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...