Django媒体url在CSS文件中

在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上下文variables。

有什么解决scheme?

编辑:我应该注意到,问题出现,因为我的静态媒体文件实际上位于一个单独的媒体子域, 从而否定使用相对path。 知道了谢谢!

你的css文件来自哪里? 这通常不是一个常见的媒体结构的问题,如:

 media/ images/ css/ js/ 

(或类似的)允许图像的相对文件path,例如:

 background: url('..http://img.dovov.comfoo.png'); 

如果您不准备更改媒体文件夹结构以容纳相关文件path,则可能别无select,只能在模板中覆盖css声明,而在脱机时使用辅助css文件:

 {% if DEBUG %} <link rel="stylesheet" href="{{ MEDIA_URL }}css/offline-mode.css" /> {% endif %} 

当然,第一个选项更加整洁。

对不起,你不会喜欢这个答案。

我有同样的问题:

有没有简单的方法来做到这一点与静态服务的CSS文件。

我做的事:

  • debugging服务器,在本地工作,媒体在本地服务
  • 生产服务器托pipe在Amazon S3上的某个商业W /媒体上
  • settings.py文件通过主机名检查自动设置MEDIA_URL(DEBUG等)(区分生产与本地/ home / debug)
  • HTML文件都有{{MEDIA_URL}}(视图的RequestContext上下文)的css链接,
  • 我喜欢绝对path名,所以一个“update_s3”脚本: (1)改变每个css文件暂时修复'url(“/ media'to'url(”s3.mydomain.com/media'和(2)更新/将我的/ media目录上传到Amazon S3

然后我去生产,做一个svn更新和触摸WSGI文件和validation

在你的CSS文件中使用相对path(对于图像文件)不是一个可行的select吗?

如果你想在一个文件中使用模板指令,为什么不通过模板提供?