python - 在 CSS 文件中使用 Django 变量

标签 python css django templates django-templates

我正在尝试使用 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/

相关文章:

python - MLlib 和 pyspark 功能

javascript - 固定大小的 html 文本输入区域 - 不允许超出边界定义的限制的更多文本

javascript - 防止文本在 div 扩展时重新格式化

python - django - 无法分配外键

django - 重定向 Django View

Python:&= 运算符

python - 获取嵌套列表中特定索引的不同值

django - 如何在 django 1.6 中满足 django.contrib.markup.templatetags.markup import restructuredtext?

使用 Pigment 程序突出显示 python 语法

html - 在不使用导航或图标栏的情况下使用 div 类中的图标