在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静态视图提供。但CSS文件是一个问题,因为它们不作为模板处理,我不能使用MEDIA_URL
上下文变量。
解决方案是什么?
编辑:我应该注意到问题出现了,因为我的静态媒体文件实际上位于一个单独的媒体子域,因此无法使用相对路径。明白了,谢谢!
答案 0 :(得分:46)
您的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 %}
当然第一个选择更加整洁。
答案 1 :(得分:6)
抱歉,您不会喜欢这个答案。
我遇到了同样的问题:
使用静态服务的CSS文件没有简单的方法。
我的所作所为:
然后我去制作并做一个svn更新&amp;触摸WSGI文件&amp;验证
答案 2 :(得分:3)
在CSS文件中使用相对路径(用于图像文件)对您来说不是一个可行的选择吗?
答案 3 :(得分:0)
如果您想在文件中使用模板指令,为什么不通过模板提供?