2016-04-09 370 views
1

如果我做一個上下文處理器是這​​樣的:「WSGIRequest」對象沒有屬性

def add_external(request): 
    context = {"stext":"this is the info"} 
    return context 

,這增加了設置:

'OPTIONS': { 
    'context_processors': [ 
     'django.template.context_processors.debug', 
     'django.template.context_processors.request', 
     'django.contrib.auth.context_processors.auth', 
     'django.contrib.messages.context_processors.messages', 
     'website.context_processor.add_external', 
    ], 

我可以通過{{stext}}在模板中訪問變量。當我現在在這個模板的鏈接跳進同一個應用另一種觀點認爲我不應該能夠訪問該變量爲:

request.stext 

相反,我得到這個錯誤:

'WSGIRequest' object has no attribute 'stext' 

什麼我在這裏失蹤?

+1

不,上下文處理器不會向請求對象添加屬性,並且它們當然不會在完全不同的請求中提供數據。你爲什麼認爲這應該起作用? –

+0

你說得對,我試圖做一些技術上完全不可能的事情。我通過使用會話中間件解決了它(儘管代碼在相同的細節-request.session而不是請求中看起來不同),但後臺還是有很多東西在進行着。 –

回答

0

您實現了上下文處理器,該數據僅在模板內部可用,但不可用於request對象。

您可能想要使用自定義請求middleware

+0

確實中間件解決了我的問題,我使用已經實現的會話中間件來完成它。 –

相關問題