Django:在路径为动态的模板中插入图像

时间:2016-06-01 16:52:23

标签: django

我知道我可以使用以下命令在基于模板的html生成页面中插入图像:

 <img src="{% static "myapp/my_image.jpg" %}" alt="Image Description">

问题是我想要一些稍微复杂的东西。让我们说我有一个对象&#34;用户&#34;在我的模板中,带有user.first_name和user.last_name属性。我想插入一个路径为的图像:

 <img src="{% static "myapp/{{user.first_name}}_{{user.last_name}}.jpg" %}" alt="Profile Picture">

这行错了,我收到错误(Django无法解析表达式)。有人可以帮忙吗?

我正在用照片构建一种组织结构图,这是为每个成员包含个人资料图片的正确方法(基于这些图片应该命名为firstname_lastname.jpg)?

由于

4 个答案:

答案 0 :(得分:2)

虽然我建议您在视图中创建路径并将其作为上下文传递给模板,但您也可以使用add filter

{% static "myapp/"|add:user.first_name|add:"_"|add:user.last_name|add:".jpg" %}

您还可以为此创建自定义模板标记。很多选择。

答案 1 :(得分:2)

你可以做另一件事:

<img src ="{% static 'myapp/' %}{{user.first_name}}_{{user.last_name}}.jpg" alt="Profile Picture">

这样可以正常工作。希望这会有所帮助:)

答案 2 :(得分:0)

您必须使用自定义过滤器(不要使用<td>,这并不意味着添加字符串)。

add

custom filter <img src="{% static 'myapp/'|addstring:user.first_name|addstring:'_'|addstring:user.last_name|addstring:'.jpg' %}" alt="Profile Picture"> 可能

的位置
addstring

另一种选择是使用自定义过滤器完成所有魔术和在img src中使用它:

# In : templatetags/<app>_extras.py

from django import template

register = template.Library()

@register.filter
def addstring(s1, s2):
    return str(s1) + str(s2)

答案 3 :(得分:0)

如果目标只是设置动态图像路径。这对我有用。你可以试试看。

{% load static %}
<img src ="{% static 'images/myimage.jpg' %}" alt="My image" width="1500" height="333" id="plot" style="visibility: hidden"/>
<script>
function imageShow(){
  var name="myname";
  {% load static %}
  var filename="{% static 'images/' %}"+name+".png";
  document.getElementById("plot").src=filename;
  document.getElementById("plot").style.visibility='vsible';
}
</script>