Django只在模板中加载第一个静态文件

时间:2016-03-15 01:10:23

标签: python html 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>

我有&#39;全球&#39;在我的STATICFILES_DIRS中正确设置,都是&#39; grid.css&#39;和&#39; style.css&#39;存在于该目录中,两种样式都不冲突。

但只有&#39; grid.css&#39;当我使用上面的代码渲染页面时加载。

当我检查chrome中的inspect元素时,正确显示/呈现两个链接

<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">

但是当我查看“来源”时chromes dev工具显示文件夹&#39; static / global / css&#39;,并在其中仅显示 grid.css。所以Django没有在响应中提供style.css。

我知道style.css有效,当我注释掉加载grid.css的行时,style.css 加载。

同样,似乎只有模板中请求的第一个静态文件才会在响应中传递。

2 个答案:

答案 0 :(得分:1)

它是HTML属性&#39; title&#39;。如果在样式表链接上设置了该样式表,则该样式表将成为“首选”样式表。样式表和其他所有内容都将被忽略。我摆脱了标题属性并且有效。

答案 1 :(得分:0)

我不认为这是来自Django,据我所知django不这样做。

清除缓存,然后重试。也许您的第一个CSS文件可能已从缓存加载,而第二个文件可能不会先缓存。

如果在清除缓存后未加载这两个文件,则静态文件配置中存在错误。

如果在清除缓存后第一个CSS出现,请检查Google Chrome中的“网络”标签。查看请求的位置,并查看收到的响应。检查响应是作为文件还是404或503进行检查并进行相应的调试。