Python 在django中加载变量名为的静态文件

Python 在django中加载变量名为的静态文件,python,django,web-applications,Python,Django,Web Applications,我正在尝试加载以下静态文件 <a href="{%static 'static/images/'{{ image.title }}'.png' %}">img file</a> 其中,image位于从数据库派生的图像的for循环中 但是我只是得到了一个错误,无法解析剩余部分:'{{'来自''static/matrices/'{{' 我应该怎么做才能解决这个问题?我不能使用相对路径,因为子部分也会使用它,使用相同的html模板。您应该避免嵌套标记 您想解决什么问题

我正在尝试加载以下静态文件

 <a href="{%static 'static/images/'{{ image.title }}'.png' %}">img file</a> 

其中,
image
位于从数据库派生的
图像的for循环中

但是我只是得到了一个错误,
无法解析剩余部分:'{{'来自''static/matrices/'{{'


我应该怎么做才能解决这个问题?我不能使用相对路径,因为子部分也会使用它,使用相同的html模板。

您应该避免嵌套标记

您想解决什么问题?图像不是动态内容的一部分吗?静态标记用于未上载媒体文件的静态内容

如果您必须使用静态标记,那么正确的方法应该是:

{% static image %} or {% static image.file %}
取决于对象布局。如果使用的是
ImageField
(继承
FileField
),则图像对象已保留路径,因此无需手动添加扩展名。

引号太多

只是



您不必在链接中调用static,因为您已经加载了static,我最后做的就是从名称本身分割路径。这些图像表示选项卡,是静态的,并且按顺序排列。它们没有连接到数据库imagewise

我不想每次运行都重复html,所以我最后做了一个类似这样的forloop,有点简化

{% for option in options_obj %}
   <img class="highlight" src="{% static "store/img/editor/tab-" %}
   {{ option.name.lower }}-selected.png">
{% endfor %}
{%for options\u obj%}
{%endfor%}
编辑: 即使这在大多数情况下都能正常工作,但它也会把事情搞砸。对我来说,在使用不同语言设置的不同图像的同时使用诸如CachedStaticFilesStorage之类的工具时,会出现这种情况。如果您需要向图像添加语言代码或其他内容,这是一个更可靠的解决方案

{% for option in options_obj %}
    <img class="highlight" src="{% static "store/img/editor/tab-"
    |add:LANGUAGE_CODE|add:"-selected.png" %}">
{% endfor %}
{%for options\u obj%}
{%endfor%}

我在静态路径中使用空字符串,然后在它们自己的部分中使用我的变量来实现这一点,如下所示:

<a href= "{% static "" %}{{obj.a}}/{{obj.b}}/{{obj.c}}.gz" >Name</a>

您应该从staticfiles向静态标记传递一个完整的字符串。这样它就可以使用staticstorages查找您的文件

{% load staticfiles %}
{% with 'images/'|add:image.title|add:'.png' as image_static %}
  {% static image_static %}
{% endwith %}

但是在您的用例中,如果您只在图像模型本身上存储图像的路径可能会更好。

您可以使用
get\u static\u prefix
模板标记。
get\u static\u prefix
是一个变量,它包含
static\u URL
中指定的路径。您的代码是:

{% load static %}
<a href="{% get_static_prefix %}static/images/{{ image.title }}.png">img file</a>
{%load static%}

{%load static%}
{%get_static_prefix作为static_prefix%}

参考资料:

没关系……即使答案是正确的,你也会投反对票,只是为了看你有更高的声誉。我不喜欢回答太多的解释,我喜欢直截了当地回答:)@HeddevanderHeide你确定吗?你试过吗?因为我已经试过很多次了。你的答案也是正确的,但很抱歉,我们没有这么做如果你的想法不同,你就不能强迫人们按照你的想法去做。在
{%
-templatetag变量的作用域已被视为这样,不需要周围的赞誉。这与个人喜好无关,您的答案根本不正确。输出html将是:
//images/{image.title}.png
包括像字符串一样对待的荣誉。只是尝试了一下,但没有成功,{{和}在结果中被解释为%7B和%7D那么静态标记的意义是什么?只需使用静态URL。静态标记用于当您有存储时,它可能会更改名称,例如哈希存储会将md5哈希放在名称中。为什么您将错误的答案标记为正确?欢迎使用堆栈溢出!而此答案可能是正确的,并且有用的,如果您随附一些解释来解释它如何帮助解决问题,则最好使用它。如果将来发生变化(可能不相关),这将变得特别有用这会导致它停止工作,用户需要了解它曾经是如何工作的。如果必须使用javascript设置背景图像,这也是最有效的方法:
var backgroundImage='{{STATIC_PREFIX}}'+filename+.png'
;然后是
$('#选择器').css('background-image','url(“+backgroundImage+”)
ehaciom您没有真正阅读它,是吗?不,这不是在javascript中正确执行并使用django静态标记的方法。如果该项在静态标记中不存在,则会出错
{% load static %}
<a href="{% get_static_prefix %}static/images/{{ image.title }}.png">img file</a>
{% load static %}
{% get_static_prefix as STATIC_PREFIX %}
<a href="{{ STATIC_PREFIX }}static/images/{{ image.title }}.png">img file</a>