2010-04-05 62 views
16

我爲我的應用使用500.html模板,這是404.html的一個完全相同的副本,並帶有一些小的文本更改。django媒體網址未在500內部服務器錯誤模板中解析

有趣的是,如果顯示500.html(例如,當我強制內部服務器錯誤),服務器將不會解析{{media_url}}上下文變量,從而導致沒有加載任何CSS的頁面。

一個簡單的方法來繞過這將是硬編碼鏈接到CSS,但我只是好奇爲什麼media_url不解決。可能是因爲服務器遇到內部服務器錯誤,導致上下文變量不再可用!?

+0

這發生在我身上,{{STATIC_URL}}也是如此。 – jjmontes 2017-09-15 01:25:44

回答

11

500錯誤處理程序不會將RequestContext傳遞給模板,它只是使用Context。如您所知,MEDIA_URL被添加到上下文處理器中,僅當您使用RequestContext時纔會包含該處理器。

如果需要,您可以設置自己的500處理程序並傳遞RequestContext。

以下是關於製作自定義處理程序500的django docs的鏈接。

+1

我會堅持默認的500處理程序,並硬編碼的CSS鏈接。對我來說這很好;-)只要知道Django爲什麼這樣表現就好。謝謝! – 2010-04-05 18:27:11

3

django文檔建議您不要爲您的500.html文件使用模板,因爲無法處理該模板呈現中的錯誤。

只需粘貼HTML文件,通知用戶存在錯誤。這就是他們需要知道的。

你可以看看你需要知道的服務器日誌。