Ustawianie zmiennej w oprogramowaniu pośrednim, do której można uzyskać dostęp w szablonie

Wydaje mi się, że mam trudności z ustawieniem zmiennej w jednej z moich klas oprogramowania pośredniego, do której mogę uzyskać dostęp w warstwie szablonu.

Podstawowy układ to:

class TheMiddleware(object):
    def __init__(self, etc):
        stuff...

    def process_response(self, request, response):
        request.my_var = "whatever"
        return response

Następnie w szablonie dla innego widoku mam:

{% custom_tag arg_a %}

Który jest tagiem szablonu, który powinien zwrócić zmienną z żądania:

@register.simple_tag
def custom_tag(arg_a):
    return threading.currentThread().request.my_var

To powoduje błędy„Złapany atrybut AttributeError podczas renderowania: obiekt„ WSGIRequest ”nie ma atrybutu„ my_var ”

Pomyślałem, że to może być sposób na uzyskanie dostępu do żądania w tagu szablonu. Więc dodałem django.core.context_processors.request do mojego TEMPLATE_CONTEXT_PROCESSORS jak wTo pytanie i próbował przekazać obiekt żądania do znacznika, a następnie uzyskać dostęp do żądania bezpośrednio z szablonu, ale bez powodzenia.

Myślę, że brakuje mi zrozumienia, jak działają obiekty żądań. Czy możliwe jest przypisanie zmiennej do obiektu żądania i wybranie tej zmiennej w kilku widokach? Pomyślałem, że obiekt żądania został przekazany przez widoki, ale wydaje się, że zamiast tego generowana jest nowa instancja.

Jeśli tak jest, w jaki sposób przechowałbyś zmienną globalną w ramach oprogramowania pośredniego, do której mógłbyś uzyskać dostęp z dowolnego miejsca w aplikacji, czy to w widoku, czy w szablonie?

Aktualizacja:

Aby wyjaśnić zamieszanie (czy moje, czy inne, nie jestem pewien!) Jestemnie próbując ustawić zmienną żądania w oprogramowaniu pośrednim process_response widoku, a następnie odebrać ją w szablonietego samego widoku. Rozumiem, że to nie zadziałałoby, ponieważ szablon został przetworzony przed zapisaniem zmiennej. (To jest celowe działanie z mojej strony).

Mam dwa widoki,widok1 iwidok2 widok ma dekorator, który powoduje, że oprogramowanie pośrednie ustawia zmienną w żądaniu. Jest to szablon view2, który pojawia się po ustawieniu zmiennej, którą chcę uzyskać dostęp do zmiennej.

questionAnswers(2)

yourAnswerToTheQuestion