【问题标题】:Loading image in for loop with jinja2/django使用 jinja2/django 在 for 循环中加载图像
【发布时间】:2018-12-04 10:10:44
【问题描述】:

如何在网页上使用 jinja2 和 django 动态显示图像。

目前我正在尝试在 for 循环中加载图像,例如:

{% for img_path in imgs %}
   <img src="{% static "{{img_path|safe}}" %}" alt="Herb" id="plant-mascot" style="width: 100px"/>
{% endfor %}

但是,这不起作用。图像路径(imgs)绝对正确。我还尝试加载相同的图像而不将其作为变量传递并显示它。

我认为我在 jinja 和 html 方面遗漏了一些东西,我认为 jinja 不是将文本 img_filepath 传递给 html 而是一个对象或其他东西?

如何进行这项工作才能在网页上显示任意数量的图像?

变量 imgs 是一个包含 img 路径的列表,例如:

['img/im1.jpg', 'img/im2.jpg',...]

预期输出:

网页上显示所有图像('im1.jpg'、'im2.jpg'、...)的网页

实际输出:

一个空网页

【问题讨论】:

  • 你能把预期输出和实际输出相加吗? imgs的内容是什么?
  • 如果您已经在{% %} 标签内,则无需将变量名括在双花括号中。只需使用普通的变量名。

标签: python html django jinja2


【解决方案1】:

这里的关键是使用浏览器的“查看页面源代码”命令查看生成的 HTML。您可能会看到 Jinja 模板的语法不正确:

  • 嵌套的“{%”和“{{”(正如@JohnGorden 指出的那样)。
  • “static”也是 Jinja 中的一个函数,看起来像“static('url')”这样更好。

src 属性的类似(未经测试):

src="static("{{img_path|safe}}")"

您可能也不希望对所有图像使用相同的“id”属性。

【讨论】:

    【解决方案2】:
    {% for img_path in imgs %}
       <img src="{{img_path|static|safe}}" alt="Herb" id="plant-mascot" style="width: 100px"/>
    {% endfor %}
    

    【讨论】:

      猜你喜欢
      • 2020-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      相关资源
      最近更新 更多