我知道我可以使用以下命令在基于模板的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)?
由于
答案 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>