Css 静态引用不适用于 Django 模板

Posted

技术标签:

【中文标题】Css 静态引用不适用于 Django 模板【英文标题】:Css static reference do not work on Django Template 【发布时间】:2018-09-19 11:38:09 【问题描述】:

我有一个通过索引视图呈现的 html 模板。 它有几个引用的静态 css:

  <html lang="pt-pt">
  <head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <title>AppGestao by Araujo</title>
    <meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
      <meta name="viewport" content="width=device-width" />

     <!--STYLE FILES START-->
      % load staticfiles %
      <!-- Bootstrap core CSS     -->
      <link href="% static 'css/bootstrap.min.css' %" rel="stylesheet" type="text/css"/>
      <!-- Animation library for notifications   -->
      <link href="% static 'css/animate.min.css' %" rel="stylesheet"  type="text/css"/>
      <!--  Light Bootstrap Table core CSS    -->
      <link href="% static 'css/light-bootstrap-dashboard.css?v=1.4.0' %" rel="stylesheet"  type="text/css"/>
      <!--STYLE FILES END-->
  </head>

我在 APP_NAME/static/css 中有文件 如果我在没有 django 渲染和手动引用静态 css 的情况下单独运行此 html,则效果很好。 如果我通过 %static 做到这一点,它不会。

尽管如此,当我在 chrome 中看到源代码时,它们看起来与相同的 css 链接完全相同!

【问题讨论】:

现在发现最后一个css文件没有正确加载,是不是某种特殊的css?它看起来不像普通的 css 类型.. settings.py 是什么样的? static_url, static_root? 【参考方案1】:

我通过改变这个解决了这个问题

 <link href="% static 'css/light-bootstrap-dashboard.css?v=1.4.0' %" rel="stylesheet"  type="text/css"/>

 <link href="% static 'css/light-bootstrap-dashboard.css' %" rel="stylesheet"  type="text/css"/>

这很奇怪,因为它可以在没有 django 的情况下工作。 为什么会有那个版本? (这是由官方引导模板拍摄的)

【讨论】:

【参考方案2】:

看起来您需要的是静态网址,这些网址也可以通过 GET 参数,如本文previous SO post中所示。

只需将它们添加到末尾:

<a href="% static css/css.css %?office=foobar">

对于 Django 1.5+

<a href="% static 'css/css.css' %?office=foobar">

【讨论】:

以上是关于Css 静态引用不适用于 Django 模板的主要内容,如果未能解决你的问题,请参考以下文章

Django:css在静态文件中引用媒体(django dev / 1.3 / static files)

Javascript 不适用于 Django 模板继承

Django 静态文件引用

(模版系统全局变量-if判断-for循环-过滤器-模版继承/引用-引用静态文件)

12.Django中静态文件的引用

12.Django中静态文件的引用