在 .py 文件中引用 django 中的静态文件(不在模板中)

Reference static files in django in .py files ( NOT in templates)

我花了一个小时搜索如何在 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}}

等等...

谢谢!

您可以阅读 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')
from django.templatetags.static import static
'<a href=/url> <img  src="{0}" ></a>'.format(static("image.png"))

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

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

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

Django Docs