2012-12-12 42 views
1

我不知道我在做什麼錯誤。Chrome無法渲染由Python/WebApp2提供的樣式表

我正在使用Twitter Bootstrap和前端的基本頁面,並在後端使用Python/WebApp2(而不是Google App Engine)提供所有功能。

如果我在Internet Explorer 8中從服務器加載頁面,則顯示樣式。

如果我從C:/在Chrome中加載頁面,則顯示樣式。

如果我在Chrome中從服務器加載頁面,則不顯示樣式。

我檢查了我所有的mime類型,比較了C:/和服務器頁面,並且所有內容看起來都一樣。

我不能爲我的生活弄清楚爲什麼Chrome在Python/WebApp2提供服務時不會呈現樣式表。

我無法弄清楚如何把代碼,而無需實際在該文本框中處理,所以我使用的頁面是基本相同的例子所示: http://twitter.github.com/bootstrap/getting-started.html

任何想法?

- Python腳本對CSS http://i.stack.imgur.com/Tu4NX.png

非樣式化 - 被Python/webapp2的投放在瀏覽器中查看 http://i.stack.imgur.com/vfKIa.png

樣式化 - 選自C被拉入鉻

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

非樣式化觀察 - Chrome資源標籤 http://i.stack.imgur.com/HvQXt.png

樂府 - 鉻資源選項卡 http://i.stack.imgur.com/Rel3r.png

我能拉起CSS文件中的鉻資源選項卡,看到CSS文件的內容。沒有警告說它在控制檯中被解釋爲text/xml。 http://i.stack.imgur.com/5gTUO.png

+0

你能列出Chrome從服務器上下載的CSS文件的內容嗎?我唯一的建議是清除Chrome中的緩存並重試。 – ladaghini

+0

我可以通過Chrome的資源標籤查看CSS文件的內容。我編輯了原始問題來解決這個問題。謝謝。 – user1898041

回答

1

GAAAH我只是想通了!

在我的python代碼中,你可以看到我使用'self.response.headers.add_header'。我猜想,無論何時使用'self.response.out.write'函數,默認情況下它都有一個'text/html'內容類型。如果你'添加標題',那麼它會在最後的'text/html'標題前添加'text/css'標題。然後,Chrome會讀取最後一個標題,並將其用作樣式shee的內容類型。我猜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()) 

耶!

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從代碼邏輯中分離出來。