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)