如何刷新烧瓶网页?

陳俊良*_*陳俊良 5 html python flask

最近,我有一个项目是在网页上实现动态绘图.

这是我的python代码

from flask import Flask
#from flask import render_template
import matplotlib.pyplot as plt
import io
import base64

app = Flask(__name__)

@app.route('/plot')
def build_plot():

    img = io.BytesIO()

    y = [1,2,3,4,5]
    x = [0,2,1,3,4]
    plt.plot(x,y)
    plt.savefig(img, format='png')
    img.seek(0)

    plot_url = base64.b64encode(img.getvalue()).decode()

    return '<img src="data:image/png;base64,{}">'.format(plot_url)
if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0')
Run Code Online (Sandbox Code Playgroud)

这是我的HTML代码

<!DOCTYPE html>
<html>
    <head>
        <title> Plot</title>
        <meta content='5; url=http://127.0.0.1:5000/plot' http-equiv='refresh'>
    </head>
    <body>
        <img src="data:image/png;base64, {{ plot_url }}">
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)

虽然我添加<meta content='5; url=http://127.0.0.1:5000/plot' http-equiv='refresh'>到我的HTML代码中,但它仍然无法自动刷新.

如果我想观察绘图的变化,我仍然需要手动刷新它.

任何人都可以帮我解决这个问题吗?非常感谢

Nab*_*bin 5

您不需要包含URL。仅使用标记的content属性meta

<meta http-equiv="refresh" content="5" >
Run Code Online (Sandbox Code Playgroud)

但是要查看图形中的实时变化,您可能需要查看flask中的套接字。这将帮助服务器使用广播将更改推送到所有客户端。与定期刷新页面相比,使用套接字是一种更好的方法。

  • 但是请注意,websockets通常无法在公司防火墙后面运行。我建议改为使用AJAX。 (2认同)
  • 资源方面的websocket是高效的,访问方面的AJAX是最安全的。我在工作中遇到了拒绝websocket的情况,并且经常遭受痛苦。而且,由于所有公司网络均已正确配置,因此我对此无能为力。无论如何-这些只是我的0.02美元。 (2认同)