2010-11-20 25 views
1

遇到最奇怪的問題,它沒有任何意義。我已經經歷了很多次這樣的代碼,並在我的智慧結束試圖找出問題所在。基本上用firefox和safari測試一個網站,他們的行爲有所不同。這可能對Javascript或CSS有意義。django模板在Firefox和safari上的評估方式不同

但是,這是django代碼,不是不同的評估。一個簡單的例子:

我的模板代碼:

{% if myvar == 'var1' %} 
{{ status }} 
{% endif %} 

列入標籤是一個簡單的包含標籤,返回幾個變量並更新內容。

在Firefox中,如果myvar評估並顯示狀態變量。然而,safari中完全相同的代碼不起作用。它只適用於刷新頁面(並且不會因爲我啓用了虛擬緩存而無法緩存)

真的,這完全沒有意義!我有一個現場測試服務器,但不能發佈在這裏。如果您給我發送消息可以發送網址。

做了一些挖掘所使用的版本(火狐)具有以下附加HTTP頭,而Safari不(所以我的猜測是,它不檢查更新版本)

「HTTP_IF_MODIFIED_SINCE」,HTTP_IF_NONE_MATCH ,HTTP_KEEP_ALIVE

+1

Django創建服務器端代碼,模板只是在代碼輸出到瀏覽器之前被替換的地方。你是否100%確定它是以不同方式顯示的代碼?你介意分享你的代碼的其他部分,比如說視圖嗎?我們希望看到您正在渲染模板的上下文。 – kovshenin 2010-11-20 22:59:33

+1

也許safari使用緩存,只有當你強制它重新加載? – 2010-11-20 22:59:51

+0

@ kvshenin,謝謝,我明白它是服務器端代碼並​​提供給瀏覽器。這就是爲什麼它對我沒有意義。 Django對瀏覽器一無所知。它生成要傳送給瀏覽器的html。所以我說沒有意義。 – ismail 2010-11-20 23:26:16

回答

0

myvar您從網址獲取的東西?也許Firefox和Safari發送稍微不同的字符串?

+0

Nop,我的var作爲上下文變量傳入。這就是爲什麼我完全失去了這一點(這是毫無意義的) – ismail 2010-11-20 23:19:43

0

有沒有可能你有一個上下文處理器和/或中間件,正在與東西混雜?這兩種情況都會造成奇怪的幕後故障類型問題 - 有點像網絡問題,並且不知道有防火牆淹沒你的數據包。