django - 指模板中的静态文件

时间:2012-02-06 16:38:54

标签: django relative-path django-staticfiles

我有我的django应用程序的模板,由网页设计应用程序(axure)设计。因此,这些模板文件中的所有静态文件引用都是相对的,例如

<img src="/resources/image/icon.gif"/>

我按照此处https://docs.djangoproject.com/en/dev/howto/static-files/的说明修改了应用程序的设置以包含静态文件并修复了STATIC_URL。但是,通过这种方式,我仍然必须将此标记{{ STATIC_URL }}放在每个静态文件引用的前面。

是否有一种通用的方法可以让django接受静态文件的这些相对路径?

谢谢!

2 个答案:

答案 0 :(得分:4)

这不是一条“相对”的道路。这就是所谓的“相对绝对”。当您使用/作为前缀时。它告诉浏览器直接从域引用以下路径。这与Django无关。它与浏览器有关,它们所有以这种方式工作。

{{ STATIC_URL }}没有什么特别之处;它只是一种简单而安全的方法,可以使用正确的路径为您的引用添加前缀。您实际上可以在HTML中硬编码完整的URL:

<img src="/path/to/static/resources/image/icon.gif"/>

但是如果你的STATIC_URL发生了变化,你就会失败。这就是你使用{{ STATIC_URL }}的原因,所以无论它是设置为“/ static /”还是“http://cdn.someprovider.com/myproject/something-else/static/”,你的引用都会起作用。< / p>

长而短,不,没有“通用方式”。您必须告诉浏览器它可以找到文件的确切位置,并且需要使用{{ STATIC_URL }}

答案 1 :(得分:0)

如果您使用像nginx这样的后端,可以将/ staticimage设置为指向/ path / to / static / resources / image /然后使用/ staticimage。

我确定您使用的任何Web服务器都可以获得这样的路径映射。