Chrome无法呈现由Python / WebApp2提供的样式表

时间:2012-12-12 14:24:20

标签: python css google-chrome internet-explorer-8 webapp2

我不知道我做错了什么。

我正在使用Twitter Bootstrap,前端的基本页面和后端的Python / WebApp2(非Google App Engine)服务。

如果我从Internet Explorer 8中的服务器加载页面,则会显示样式。

如果我从Chrome中的C:/加载页面,则会显示样式。

如果我在Chrome中从服务器加载页面,则不会显示样式。

我检查了所有的mime类型,比较了C:/和服务器页面,一切看起来都一样。

我不能为我的生活弄清楚为什么Chrome在Python / WebApp2服务时不会渲染样式表。

我无法弄清楚如何在没有实际处理的情况下放置代码,因此我使用的页面与此处显示的示例基本相同: http://twitter.github.com/bootstrap/getting-started.html

有什么想法吗?

css的Python脚本 http://i.stack.imgur.com/Tu4NX.png

非样式 - 在Chrome中查看由Python / Webapp2提供服务 http://i.stack.imgur.com/vfKIa.png

样式 - 在Chrome中查看从C中拉出

http://i.stack.imgur.com/35C4S.png

非样式 - Chrome资源标签 http://i.stack.imgur.com/HvQXt.png

样式 - Chrome资源标签 http://i.stack.imgur.com/Rel3r.png

我可以在Chrome资源管理器标签中提取CSS文件并查看CSS文件的内容。没有警告它在控制台中被解释为text / xml。 http://i.stack.imgur.com/5gTUO.png

2 个答案:

答案 0 :(得分:1)

GAAAH我刚想通了!

在我的python代码中,你可以看到我正在使用'self.response.headers.add_header'。我想每当你使用'self.response.out.write'函数时,它默认都有'text / html'内容类型。如果你'添加标题',那么它会在最后的'text / html'标题之前添加'text / css'标题。然后,Chrome会读取最后一个标题,并将其用作样式表的内容类型。我猜IE和Opera使用的第一个? 无论如何:修复,使用:

self.response.headers['Content-Type'] = "text/css"

并作为一个整体

def css(self, css_dir, filename, extension):
    self.response.headers['Content-Type'] = "text/css"
    self.response.out.write(open(css_dir + filename + extension,"rb").read())

耶!

答案 1 :(得分:0)

我希望using webapp templates比代码中的直接响应HTML输出更好。

只需使用

创建index.html
<html>
<head>
 <link rel="stylesheet" href="{{path_to_css}}" type="text/css" />
</head>
<!-- body.. -->

然后您可以从代码中设置path_to_css。使用这种方法,您可以将HTML,CSS与代码逻辑分开。