例如,我可能希望按如下方式加载图像:
background: url("/path/to/image.png")
但是,因为 CSS 文件不是通过模板系统运行的,所以我无法访问通常的
{% load staticfiles %}
处理此类静态内容的正确方法是什么?
最佳答案
浏览器已经知道 css 文件路径,所以只需使用相对 URL:
background: url("../img/image.png")
[编辑]
But what happens if I have a page at /onelevel And another page at /really/deeply/nested/page won't this break the relative system? Also if I eventually choose to host the static content externally ideally I would like the study content management to be as DRY as possible - OP.
让我解释。为了读取 CSS 文件,浏览器必须先下载它。为了下载它,必须知道 CSS 文件 URL。所以浏览器已经知道了 CSS 文件的路径。假设您在 CDN 上托管媒体,URL 为:
http://cdn.yoursite.com/css/style.css
当您使用像
../img/logo.png
这样的相对 URL 时,浏览器将获取 CSS 文件的路径 ( http://cdn.yoursite.com/css/
) 并附加 ../img/logo.png
到它。它运行良好,比整个路径更短,让您无需更改点即可在其他项目/应用程序中重用媒体。你不能得到更多的干燥。
这就是为什么在 CSS 文件附近的任何地方都不需要 settings.STATIC_URL 的原因,它将在 HTTP 服务时从文件 URL 派生。
关于django - 在 Django 中,如何处理 CSS 文件中的静态内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17119232/