我有一个非常初学者的问题。是否可以通过render_template(...)直接显示动态处理的matplotlib图像(如https://gist.github.com/wilsaj/862153或https://gist.github.com/rduplain/1641344所示),还是必须使用app.route('... /') ?目的是在网站内展示可定制的(科学)情节。
如果我想将数组(或多个变量)传递给绘图函数,是否有任何干净的解决方案?
答案 0 :(得分:6)
您必须使用两条路线和一个模板才能执行此操作。
显示该页面的路线将使用您的HTML页面模板调用render_template()
。模板具有页面的HTML,但不包含PNG数据。
在模板中PNG图像所在的位置,您必须插入<img>
元素,就像您尝试显示静态图像一样。
诀窍是此图像的src
属性指向第二条路线。您可以使用url_for()
生成它。例如:
<img src="{{ url_for('mypng', data = some_data) }}">
当浏览器收到HTML时,它会找到图像的链接并加载该URL。这将在服务器中执行第二条路径。
第二条路线生成PNG数据并将其作为响应返回,没有模板并设置内容类型image/png
,以便浏览器将其呈现为图像。第二条路线将按照您引用的两个链接进行编码。
我希望这有帮助!