【问题标题】:Reference static files in django in .py files ( NOT in templates)在 .py 文件中引用 django 中的静态文件(不在模板中)
【发布时间】:2015-02-02 20:31:58
【问题描述】:

我已经花了一个小时搜索如何在 django 中引用静态文件,但我只找到了如何在模板中执行此操作。 在我的项目中,我成功地在模板中引用了静态文件,但我不想在模板中这样做,我想在我的 .py 文件中这样做。

我认为我必须从某个地方导入静态,我已经尝试过:

from django.templatetags.static import static
from django.conf.urls.static import static

并尝试像这样引用它

'<a href=/url> <img  src="{{ STATIC_URL }}image.png" ></a>'

我已经尝试了所有可能的组合,例如

{% static image.png %}
{{static image.png}}

等等……

谢谢!

【问题讨论】:

    标签: python django static


    【解决方案1】:
    from django.templatetags.static import static
    '<a href=/url> <img  src="{0}" ></a>'.format(static("image.png"))
    

    注意django.templatetags.static实际上是一个函数。当您使用模板标签时,模板引擎会调用该函数。

    【讨论】:

    • @Danistroyer 你能接受其中一个答案吗?这样,其他人就会知道这个问题已得到解答。
    • 对我来说,这可以正确显示路径,但管理员中的 imgs 永远不会加载
    【解决方案2】:

    如果你想在磁盘上找到实际的文件,你可以使用 staticfiles 应用程序的 finders 类:

    >>> from django.contrib.staticfiles import finders
    >>> finders.find("icons/exclamation.svg")
    'C:\\<project folder>\\<project name>\\<app name>\\static\\icons\\exclamation.svg'
    

    Django Docs

    【讨论】:

      【解决方案3】:

      您可以阅读 django 配置以获取 STATIC_URL,其中包含静态文件的 URL 基础部分:

      from django.conf import settings
      import urlparse
      
      print '<a href=/url> <img src="%s"></a>' % urlparse.urljoin(settings.STATIC_URL, 'image.png')
      

      【讨论】:

      • 代码 sn-ps 本身的信息量不是很大。请解释代码的作用、为什么要这样写以及您希望它如何工作
      • 我添加了文档链接
      • 这不适用于各种静态文件存储后端
      猜你喜欢
      • 2012-12-10
      • 2012-02-28
      • 2016-11-11
      • 1970-01-01
      • 1970-01-01
      • 2011-12-18
      • 2012-06-03
      • 1970-01-01
      • 2016-04-03
      相关资源
      最近更新 更多