2010-11-20 17 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

有没有可能你有一个上下文处理器和/或中间件,正在与东西混杂?这两种情况都会造成奇怪的幕后故障类型问题 - 有点像网络问题,并且不知道有防火墙淹没你的数据包。