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

Django:在路径为动态的模板中插入图像,django,Django,我知道我可以使用以下方法在基于模板的html生成页面中插入图像: <img src="{% static "myapp/my_image.jpg" %}" alt="Image Description"> 问题是我想要更复杂一点的东西。假设我的模板中有一个具有user.first\u name和user.last\u name属性的对象“user”。我想插入一个图像,其路径为: <img src="{% static "myapp/{{user.first_name}

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

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

问题是我想要更复杂一点的东西。假设我的模板中有一个具有user.first\u name和user.last\u name属性的对象“user”。我想插入一个图像,其路径为:

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

这一行是错误的,我得到一个错误(Django无法解析表达式)。有人能帮忙吗

我正在用照片构建一种组织结构图,这是为每个成员包括个人资料图片的正确方式吗(基于图片应命名为firstname_lastname.jpg的事实)


谢谢

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


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

您必须使用自定义筛选器(不要使用
add
,这并不意味着要添加字符串)

另一个选项是让自定义过滤器发挥所有的魔力&在img src中使用它:

@register.filter
def imgsrc(user):
    return 'myapp/{}_{}.jpg'.format(user.first_name, user.last_name)

你可以做另一件事:

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


这也行。希望这有帮助:)

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

{% 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>
{%load static%}
函数imageShow(){
var name=“myname”;
{%load static%}
var filename=“{%static'images/'%}”+name+“.png”;
document.getElementById(“plot”).src=文件名;
document.getElementById(“plot”).style.visibility='vsible';
}

在视图中创建路径并将其传递给模板…或在用户类上编写一个方法。尽管另一个答案说
add
不适合添加字符串,但这对我来说效果很好。Django 1.10、Python 3.5.1。
@register.filter
def imgsrc(user):
    return 'myapp/{}_{}.jpg'.format(user.first_name, user.last_name)
<img src ="{% static 'myapp/' %}{{user.first_name}}_{{user.last_name}}.jpg" alt="Profile Picture">
{% 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>