在Django中,我如何处理CSS文件中的静态内容?

时间:2013-06-15 00:57:12

标签: django

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

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

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

{% load staticfiles %}

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

1 个答案:

答案 0 :(得分:4)

浏览器已经知道了css文件路径,所以只需使用相对URL:

background: url("../img/image.png")

[编辑]

  

但是,如果我在/ onelevel处有一个页面,那么会发生什么?/ really / deep / nested / page中的另一个页面会不会破坏相关系统?此外,如果我最终选择在外部主持静态内容,我希望研究内容管理尽可能干 - OP。

让我解释一下。为了读取CSS文件,浏览器必须先下载它。要下载它,必须知道CSS文件URL。所以浏览器已经知道了CSS文件的路径。假设您在CDN上托管媒体,并且URL为:

http://cdn.yoursite.com/css/style.css

当您使用../img/logo.png之类的相对网址时,浏览器会获取CSS文件的路径(http://cdn.yoursite.com/css/)并向其附加../img/logo.png

效果很好,比整个路径短,让您可以在不改变点的情况下在其他项目/应用程序中重用媒体。你不能得到更多的干。

这就是为什么你不需要在CSS文件附近的任何地方使用settings.STATIC_URL,它将在HTTP服务时从文件URL派生。