4

例如,我可能希望按如下方式加载图像:

background: url("/path/to/image.png") 

但是,因为 CSS 文件没有通过模板系统运行,所以我无法访问通常的

{% load staticfiles %}

处理此类静态内容的正确方法是什么?

4

1 回答 1

4

浏览器已经知道 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 派生。

于 2013-06-15T01:11:24.063 回答