我似乎很難在我的一箇中間件類中設置一個變量,然後我可以在模板層訪問該變量。在中間件中設置一個變量,以便在模板中訪問
基本佈局是:
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
這個錯誤與「Caught AttributeError whil e渲染:'WSGIRequest'對象沒有屬性'my_var'「
我認爲這可能是我在模板標籤中訪問請求的方式。所以我將django.core.context_processors.request添加到我的TEMPLATE_CONTEXT_PROCESSORS,如This question,並嘗試將請求對象傳遞給標記,然後直接從模板訪問請求,但沒有運氣。
我想我對於請求對象的工作方式缺乏瞭解。是否可以將一個變量分配給一個請求對象,然後在該變量上選擇幾個視圖?我認爲請求對象是通過視圖傳遞的,但似乎是生成了一個新的實例。
如果是這樣的話,你會如何在中間件中存儲一個全局變量,然後你可以從你的應用中的任何點訪問它,無論是在視圖還是模板中?
更新:
要清理混亂(我或其他人是否我不知道!)我不試圖設置請求變量視圖中的process_response中間件,然後在相同視圖的模板中挑選它。我知道這是行不通的,因爲模板在變量保存之前已經被處理了。 (這是我的一個故意行爲)。
我有兩個視圖,廠景和視圖2視圖一個具有使中間件設置變量在所述請求的裝飾。這是view2模板,它在變量被設置之後出現,我希望訪問這個變量。
更新的問題,我的選擇process_response的是故意 – PT114 2013-03-26 10:09:43
@ PT114,你的意思是有2個進來的2個不同的網址/看法單獨的請求? – Rohan 2013-03-26 10:12:25
是的。我認爲這個請求和任何變量一直存在,但它看起來越來越像是不是這種情況。在這種情況下,你將如何去存儲一個可以全局訪問的變量? – PT114 2013-03-26 10:16:27