CSS 文件中的 Django 媒体 URL

标签 django django-templates

在 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/

相关文章:

python - Django 渲染字典性能

html - 当我希望它是固定大小时网页是可滚动的 - django

django - 从查询集中获取唯一多对多记录的列表

javascript - 如何使用 Django 控制循环

database - Django - 保持基于 save() 的事务简短

python - GoogleAppEngine 上的 Django : performance howto

python - 确保所有 Django View 返回 200?

python - 验证 Django 中是否存在电子邮件

ajax - 保护基于prototype.js的XHR请求免受CSRF

javascript - 将日期字符串转换为 Date 对象