2
我有以下中間件類:Django的中間件process_template_response方法不會被調用
class CommonContextMiddleware:
def process_template_response(self, request, response):
# Get the context and top videos
context = response.context_data
...
# Add most_recent and most_viewed to the context...
context['most_recent'] = top_videos['most_recent'][:3]
context['most_viewed'] = top_videos['most_viewed'][:3]
# ...then continue rendering
return response
但是,不管是什麼,我把在功能方面,它永遠不會被調用。我推測這種方法將被調用,每個模板響應生成,我錯了嗎?
在此先感謝。
我剛剛閱讀這個答案,因爲我用TemplateResponse(...)手動替換了每個HttpResponse(t.render(c)),我知道有一種更簡單的方法。謝謝!順便說一下,在上下文處理器中,如果兩個變量具有相同的名稱(從處理器返回並且在上下文中返回一個),哪一個會贏? – Saul 2011-06-11 22:28:12
很奇怪render()與指定的模板不會返回TemplateResponse。特別奇怪,因爲內置的'django.contrib.auth.views.login'返回它。所以我需要中間件和模板上下文處理器來確保注入變量。奇怪。模板上下文處理器將模板變量字典彼此隔離,這是非靈活的(但可能更容易出錯)。 – 2015-06-17 11:36:08
@danielRoseman:'TempleResponse'網址現在是404! – NoobEditor 2015-09-11 12:28:43