例如,我可能希望按如下方式加载图像:
background: url("/path/to/image.png")
但是,因为 CSS 文件没有通过模板系统运行,所以我无法访问通常的
{% load staticfiles %}
处理此类静态内容的正确方法是什么?
例如,我可能希望按如下方式加载图像:
background: url("/path/to/image.png")
但是,因为 CSS 文件没有通过模板系统运行,所以我无法访问通常的
{% load staticfiles %}
处理此类静态内容的正确方法是什么?
浏览器已经知道 css 文件路径,所以只需使用相对 URL:
background: url("../img/image.png")
[编辑]
但是,如果我在 /onelevel 有一个页面而在 /really/deeply/nested/page 有另一个页面会发生什么,这不会破坏相关系统吗?此外,如果我最终选择理想地在外部托管静态内容,我希望学习内容管理尽可能 DRY - OP。
让我解释。为了读取 CSS 文件,浏览器必须先下载它。为了下载它,必须知道 CSS 文件的 URL。所以浏览器已经知道 CSS 文件的路径。假设您在 CDN 上托管您的媒体,并且 URL 是:
http://cdn.yoursite.com/css/style.css
当您使用类似的相对 URL../img/logo.png
时,浏览器将获取 CSS 文件 ( http://cdn.yoursite.com/css/
) 的路径并附../img/logo.png
加到它。
它运行良好,比整个路径短,让您可以在其他项目/应用程序中重用媒体而无需更改点。你不能得到更多的干燥。
这就是为什么您在 CSS 文件附近不需要 settings.STATIC_URL 的原因,它将在 HTTP 服务时从文件 URL 派生。