我正在尝试使用 Django 模板引擎或任何其他方式创建一个动态 CSS 文件。
目前,我有一个如下所示的 CSS 规则:
background-image: url('http://static.example.com/example.png');
其中http://static.example.com
对应Python中的STATIC_URL
变量。使用 Django 模板引擎,理论上我可以写这样的东西:
background-image: url('{{ STATIC_URL }}example.png');
我的问题是,如何使用 Django 模板引擎(或任何其他方式)动态生成 CSS?
最佳答案
这里一个很好的解决方案是使用 django-compressor .首先,如果您提供多个 CSS 文件,压缩器将通过减少请求数量来帮助缩短页面加载时间。
压缩/连接文件的副作用是压缩器重写 css 文件中的 url,因此相对引用的静态文件(例如 ../img/logo.png)自动成为完全限定的 url,静态文件 url(例如http://static.example.com/img/logo.png)。
或者,您可以编写自定义过滤器来实现您想要的,或者,您可以将完全静态的 CSS 和一些动态部分压缩到一个文件中(例如,在您的基本布局文件中执行此操作):
{% compress css %}
<link .... />
<style>
.some_rule {background-image:{{MEDIA_URL}}/img/logo.png}
</style>
{% endcompress %}
这也意味着您不必担心效率问题,因为 css/js 文件是在第一次访问使用它们的模板时生成的,并且它们作为普通文件存储在您的静态目录中(这是可配置的) , 因此它们被用作普通的静态文件。
关于python - 在 CSS 文件中使用 Django 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6052341/