2016-03-15 52 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