我想在 HTML 网页中显示多个绘图。我尝试了很多代码,但我找到的最简单的代码是这样的:
在我的观点函数中,我有:
for graphs in res:
plot_div = plot(res[graphs], output_type='div')
return render(request, '__', context={'plot_div': plot_div, "result": res})
在我的 HTML 中,我有:
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>test</title>
</head>
<body>
{% autoescape off %}
{{ plot_div }}
{% endautoescape %}
</body>
</html>
但是,只显示最后一张图。那是因为变量plot_div是在for循环下不断更新的。因此,我尝试创建一个这样的字典:
plot_div = dict()
for index, graphs in enumerate(res, 1):
plot_div.update({index: plot(res[graphs], output_type='div')})
return render(request, 'account/user/IndFin/indfin_resultado.html', context={'plot_div': plot_div, "result": res})
因此,我需要将 HTML 更改为:
{% for graphs in plot_div %}
{{plot_div.graphs}}
{% endfor %}
但是,结果我在我的网页中又得到了矩阵结果和最后一张图。根本没有图表,只有最后一张。有没有人遇到过这样的问题?
谢谢
我认为你需要一个字典列表而不是一个字典,比如
plot_div = [{index: plot(res[graphs], output_type='div')} for index, graphs in enumerate(res, 1)]
return render(request, 'account/user/IndFin/indfin_resultado.html', context={'plot_div': plot_div, "result": res})
在你的模板中
{% for plot in plot_div %}
{{plot .output_type}}
{% endfor %}
我多次创建图形并分别传递它们对我有用。
def index(request):
figure1= fig.to_html()
figure2= fig.to_html()
return render(request, 'more.html', {'figure1':figure1,'figure2':figure2})