Установка переменной в промежуточном программном обеспечении для доступа в шаблоне
Мне кажется, что мне трудно установить переменную в одном из моих классов промежуточного программного обеспечения, к которому я могу затем получить доступ на уровне шаблона.
Основная схема такова:
class TheMiddleware(object):
def __init__(self, etc):
stuff...
def process_response(self, request, response):
request.my_var = "whatever"
return response
Тогда по шаблону для другого просмотра у меня есть:
{% custom_tag arg_a %}
Это тег шаблона, который должен возвращать переменную из запроса:
@register.simple_tag
def custom_tag(arg_a):
return threading.currentThread().request.my_var
Это ошибки сMsgstr "Поймал AttributeError при рендеринге: объект 'WSGIRequest' не имеет атрибута 'my_var'"
Я подумал, что это может быть способ доступа к запросу в теге шаблона. Поэтому я добавил django.core.context_processors.request к своим TEMPLATE_CONTEXT_PROCESSORS, как вЭтот вопрос и попытался передать объект запроса тегу, а затем получить доступ к запросу непосредственно из шаблона, но безуспешно.
Я думаю, что мне не хватает понимания того, как работают объекты запроса. Можно ли присвоить переменную объекту запроса и выбрать эту переменную в нескольких представлениях? Я думал, что объект запроса был пропущен через представления, но вместо этого создается новый экземпляр.
Если это так, как бы вы сохранили глобальную переменную в промежуточном программном обеспечении, к которой вы могли бы затем обращаться из любой точки вашего приложения, будь то представление или шаблон?
Обновить:
Чтобы устранить путаницу (будь то моя или других, я не уверен!) Яне пытаясь установить переменную запроса в промежуточном программном обеспечении process_response представления, а затем забрать ее в шаблонетого же взгляда, Я понимаю, что это не сработает, потому что шаблон был обработан до сохранения переменной. (Это преднамеренный акт с моей стороны).
У меня два взгляда,view1 а такжеview2 view one имеет декоратор, который заставляет промежуточное ПО устанавливать переменную в запросе. Это шаблон view2, который приходит после того, как переменная была установлена, я хочу получить доступ к переменной.