我正在使用Flask学习Python并创建一个我想做一段时间的玩具应用程序。我遇到了标准文件上传的特定功能问题。我想要做的是尝试根据特定模型从我的图像文件夹动态渲染图像,但我似乎在尝试字符串插值时遇到问题。
这是我的观看代码:
<h1>List of Employees</h1>
{% if employees %}
{% for employee in employees: %}
<p>{{ employee.name }}</p>
<p>{{ employee.title }}</p>
<p>{{ employee.email }}</p>
<p>{{ employee.department }}</p>
# How do I use Jinja and python to interpolate this so I can
# grab the correct image
<img src="static/images/" + {{employee.profile_image }} alt={{ employee.name }} width="120" height="90">{{ employee.profile_image }}</img>
{% endfor %}
{% endif %}
应该非常简单。我被红宝石和铁轨宠坏了......帮助将不胜感激。感谢。
答案 0 :(得分:16)
您的img
标记应如下所示
<img src="static/images/{{ employee.profile_image }}" alt={{ employee.name }} width="120" height="90" />
假设employee.profile_image
是相对于static/images/
的路径
如果没有profile_image
值但你想显示默认值,你也可以使用Jinja2的default
过滤器。
<img src="static/images/{{ employee.profile_image | default('profile.jpg') }}" alt={{ employee.name }} width="120" height="90" />
答案 1 :(得分:1)
假设:
images
文件夹位于static
文件夹内employee.profile_image
内的路径您可以使用以下替代方法将图像加载到Jinja2模板中:
<img src="{{ url_for('static', filename = 'images/'+employee.profile_image) }}" alt="">
(注意,没有{}
周围的employee.profile_image
。)
此方法与另一个方法的区别在于,当您尝试从employees/employee_details.html
模板加载图像时,您将获得正确的图像路径:/static/images/employee_image_1.jpg
。
但是,如果您尝试对<img src="static/images/{{ employee.profile_image }}" alt="" />
做同样的事情,您的路径最终可能是:/employees/static/images/employee_image_1.jpg
,这不是您想要的。