2016-03-15 131 views
1

如標題所示,只加載Django模板中的第一個靜態文件。Django只加載模板中的第一個靜態文件

這裏是有問題的代碼:

{% load staticfiles %} 

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title>{% block title %}{% endblock title %}</title> 
     <link rel="stylesheet" href="{% static 'global/css/grid.css' %}" media="screen" title="grid" charset="utf-8"> 
     <link rel="stylesheet" href="{% static 'global/css/style.css' %}" media="screen" title="main" charset="utf-8"> 
    </head> 

我已經「全球化」設置是否正確,我STATICFILES_DIRS,既有「grid.css」和「的style.css」存在於該目錄中,這兩種風格做不衝突。

但是,當我使用上面的代碼渲染頁面時,只加載'grid.css'。

當我檢查鉻檢查元素,顯示兩條鏈路/正確呈現:

<link rel="stylesheet" href="global/css/grid.css" media="screen" title="grid" charset="utf-8"> 
<link rel="stylesheet" href="global/css/style.css" media="screen" title="main" charset="utf-8"> 

但是,當我檢查「源」的鉻合金開發工具它顯示了文件夾「靜態/全球/ css',並且在其內部僅顯示顯示grid.css。所以Django沒有在響應中提供style.css。

我知道style.css的作品,當我註釋掉加載grid.css的行,style.css 確實加載了

再次,似乎只有模板中請求的第一個靜態文件在響應中傳遞。

+0

所以如果你改變了CSS文件的順序,它又是第一個會加載? – yedpodtrzitko

+0

是的,如果我在上面的代碼中切換grid.css和style.css,那麼style.css會加載並且grid.css不會 – 99lives

回答

1

這是HTML屬性'標題'。當在樣式錶鏈接上設置該樣式表時,該樣式表將成爲'首選'樣式表,所有其他樣式表將被忽略。我擺脫了標題屬性,它的工作。

0

我不認爲這是從Django,據我所知django不這樣做。

清除緩存並重試。也許你的第一個CSS文件可能已經從緩存中加載,而第二個文件可能沒有被緩存。

如果在清除緩存後兩個文件都沒有加載,那麼在靜態文件配置中會出現錯誤。

如果第一個CSS即使在清除緩存後也會出現,請檢查Google Chrome中的網絡標籤。查看請求的去向,並查看收到的響應。檢查響應是否以文件或404或503的形式進行調試並進行相應的調試。

+0

我得到一個304的靜態文件¯\ _(ツ)_ /¯ – 99lives

+0

這意味着您的兩個文件都從緩存中加載。您可以通過在瀏覽器的開發工具(網絡選項卡 - >禁用緩存)中選中「禁用緩存」來強制在瀏覽器中重新加載。然後重新加載頁面,而無需在Chrome中關閉開發工具。因爲關閉它將啓用緩存。現在你應該得到200作爲這兩個文件的響應狀態。 –

+0

我做到了,現在我得到200個回覆。但仍然只返回模板中的第一個靜態文件 – 99lives