gpt4 book ai didi

python - 如何通过 render_template 将渲染图传递给 html 文件?

转载 作者:太空宇宙 更新时间:2023-11-03 15:39:00 24 4
gpt4 key购买 nike

我正在关注这个answer ,我想使用 render_template 调用我的 html 文件,而不是直接在我的 py 中运行 plot。

我想使用类似的东西:

return render_template('hello.html', plot_url)

代替:

return '<img src="data:image/png;base64,{}">'.format(plot_url)

我的问题是,是否有任何方法可以将 plot 传递给 html 文件,然后在 flask 中运行它?

编辑:

@app.route('/')
def build_Plot():
y = [1, 2, 3, 4, 5]
x = [0, 2, 1, 3, 4]
plt.plot(x, y)
output = io.BytesIO()
plt.savefig(output, format='png')
output.seek(0)
plot_data = base64.b64encode(output.getvalue()).decode()
return render_template("home.html", url=plot_data)

在 home.html 中:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>MyFlaskApp</title>
</head>
<body>
{% block body %}
<img src="data:image/png;base64 = {{ url }} "/>
{% endblock %}
</body>
</html>

最佳答案

首先,请注意您的 html 文件名,我看到两个不同的名称,hello.htmlhome.html。然后尝试使用 matplotlib.backends.backend_agg如下:

from base64 import b64encode
from io import BytesIO
from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas
@app.route('/')
def build_Plot():
output = io.BytesIO()
y = [1, 2, 3, 4, 5]
x = [0, 2, 1, 3, 4]
plt.plot(x, y)
f = plt.figure()
canvas = FigureCanvas(f)
canvas.print_png(output)
plot_data= b64encode(output.getvalue()).decode('ascii')
output.seek(0)
return render_template("home.html", url=plot_data)

通过这种方式,它将 Canvas 写入内存文件,然后将生成的 PNG 数据编码为 base64 并插入到数据 URL 中。

关于python - 如何通过 render_template 将渲染图传递给 html 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53767198/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com