我正在嘗試從磁盤加載多個圖形并將其添加到 HTML 檔案中
為了添加單個影像,我嘗試了以下操作(參考:Jinja2/Python insert a image(s) into html)
import jinja2
env = jinja2.Environment(
loader=jinja2.FileSystemLoader('.'),
trim_blocks=True,
lstrip_blocks=True,
)
template = env.get_template("template.html")
template_vars = {"title":"TITLE", "graph":'obj.png'}
text = template.render(template_vars)
with open("test2.html", "w") as f_out:
f_out.write(text)
模板如下所示
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>TITLE</title>
</head>
<body>
<h2>Graph Goes Here</h2>
<img src="obj.png">
</body>
</html>
為了擴展它以添加多個影像,我在模板中進行了以下修改
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>{{ title }}</title>
</head>
<body>
<h2>Graph Goes Here</h2>
<dl>
{% for key, value in template_vars.items() %}
<img src="{{value}}.png">
{% endfor %}
</dl>
</body>
</html>
我想知道如何
template_vars = {"title":"TITLE", "graph":'obj.png'}
必須修改以傳遞多個數字。
uj5u.com熱心網友回復:
您將需要更新用于變數的物件型別,template_vars以使迭代更簡單。而不是字典,您可能需要一個字典串列,以便您能夠遍歷每個影像并為每個影像獲取多個屬性(在您的情況下,鍵的值和鍵的title另一個值graph)。您還應該在呼叫時參考您的變數,template.render以便 Jinja2 知道您在寫什么(即,替換template.render(template_vars)為template.render(template_vars=template_vars))。
您更新的模板可能如下所示:
<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title>TITLE</title>
</head>
<body>
<h2>Graph Goes Here</h2>
<dl>
{% for image in template_vars %}
<dt>{{ image.title }}</dt>
<dd><img title="{{ image.title }}" src="{{ image.graph }}"></dd>
{% endfor %}
</dl>
</body>
</html>
然后,需要更改的 Python 代碼部分如下所示:
template_vars = [
{"title": "TITLE", "graph": "obj.jpg"},
{"title": "TITLE2", "graph": "obj2.jpg"},
]
text = template.render(template_vars=template_vars)
這將導致以下 HTML 源輸出:
<html>
<head lang="en">
<meta charset="UTF-8">
<title>TITLE</title>
</head>
<body>
<h2>Graph Goes Here</h2>
<dl>
<dt>TITLE</dt>
<dd><img title="TITLE" src="obj.jpg"></dd>
<dt>TITLE2</dt>
<dd><img title="TITLE2" src="obj2.jpg"></dd>
</dl>
</body></html>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/515160.html
上一篇:基于Enum值的動態調度
下一篇:帶有模板類的C 模板佇列
