【问题标题】:django - referring to static files in templatesdjango - 引用模板中的静态文件
【发布时间】:2012-02-28 03:15:21
【问题描述】:
我有一个网页设计应用程序 (axure) 为我的 django 应用程序设计的模板。所以这些模板文件中引用的所有静态文件都是相对的,比如
<img src="/resources/image/icon.gif"/>
我按照https://docs.djangoproject.com/en/dev/howto/static-files/ 此处的说明修改了应用程序的设置以包含静态文件并修复了 STATIC_URL。但是,通过这种方式,我仍然必须将此标记 {{ STATIC_URL }} 放在每个静态文件引用的前面。
有没有一种通用的方法可以让 django 接受这些静态文件的相对路径?
谢谢!
【问题讨论】:
标签:
django
relative-path
django-staticfiles
【解决方案1】:
这不是“相对”路径。这就是所谓的“相对绝对”。当您添加/ 时。它告诉浏览器直接从域中引用以下路径。这与 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/”,您的引用始终有效。
长短不一,不,没有“通用方式”。你必须告诉浏览器它在哪里可以找到文件,这需要使用{{ STATIC_URL }}。
【解决方案2】:
如果您使用像 nginx 这样的后端,您可以将 /staticimage 设置为指向 /path/to/static/resources/image/,然后使用 /staticimage。
我确信您使用的任何网络服务器都可以得到这样的路径映射。