在 django 模板中,通常会执行以下操作:
<img src="{{ MEDIA_URL }}/img/someImage.jpg">
如何在不作为模板的 CSS 文件中完成此操作?
.someClass {
/* can't do this this */
background: url("{{ MEDIA_URL }}/img/someImage.jpg");
/* either this */
background: url("http://media.domain.com/img/someImage.jpg");
/* or this */
background: url("/django_static_media/img/someImage.jpg");
/* can't do both... what to do? */
}
我需要能够从媒体子域或离线工作期间提供我的文件,并直接将它们作为 django 静态 View 提供。但是 CSS 文件是一个问题,因为它们没有作为模板处理,而且我不能使用 MEDIA_URL
上下文变量。
解决方案是什么?
编辑:我应该注意到问题的出现是因为我的静态媒体文件实际上位于一个单独的媒体子域中,因此否定了相对路径的使用。 知道了,谢谢!
最佳答案
您的 css 文件是从哪里提供的?这通常不是常见媒体结构的问题,例如:
media/
images/
css/
js/
(或类似的)允许图像的相对文件路径,例如:
background: url('../images/foo.png');
如果您不准备更改媒体文件夹结构以适应相对文件路径,您可能别无选择,只能从模板中覆盖 css 声明,在离线时使用辅助 css 文件:
{% if DEBUG %}
<link rel="stylesheet" href="{{ MEDIA_URL }}css/offline-mode.css" />
{% endif %}
当然,第一个选项要简洁得多。
关于CSS 文件中的 Django 媒体 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1023888/