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吗?
如果你想在一个文件中使用模板指令,为什么不通过模板提供?