【发布时间】:2023-04-09 12:54:01
【问题描述】:
我在网上看到了很多解决方案,但找不到最简单的解决方案....简单的烧瓶页面将 df 加载到 html 表中。我想要做的只是每 N 秒重新加载 html 表中的 df,而不是整个页面。
app.py
from flask import Flask, render_template
from app import app
import pandas as pd
import sqlalchemy as sa
cn = sa.create_engine('<my connection string>')
@app.route("/")
def home():
sql = "select * from <myTable>"
df = pd.read_sql(sql,cn)
return render_template("index.html", df=df)
if __name__ == "__main__":
app.run()
index.html
{%extends "base.html"%}
{% block content %}
<div>
<table cellpadding="3" cellspacing="3" border=1>
<thead>
<tr style="background-color:#a8a8a8">
<th>Column 1</th>
<th>Column 2</th>
<th>Column 3</th>
</tr>
</thead>
<tbody>
{% for index, row in df.iterrows(): %}
<tr>
<td>{{ row["Column_1"] }}</td>
<td>{{ row["Column_2"] }}</td>
<td>{{ row["Column_3"] }}</td>
<tr>
{% endfor %}
</tbody>
</table>
</div>
{% endblock %}
如果对我的后续步骤有任何帮助,我们将不胜感激。
【问题讨论】:
-
不幸的是,flask 不支持实时重载(至少在核心中)。您应该使用 javascript 每 n 秒获取一次新数据或完全重新加载所有页面。
-
您可能最终希望使用 Vue 或 React 等前端框架。
-
“我在网上看到了很多解决方案,但找不到最简单的解决方案”。你看到了什么?你试过什么?最简单的解决方案到底是什么意思?正如@Buğraİşgüzar 提到的,通常这是通过 ajax 和 javascript 完成的
-
我见过一个看起来像这样的 javascript,但我不知道如何在 Flask 应用程序中实现它: setInterval(function(){ $('#test').load('test. html'); },5000);
-
如果重新加载所有页面对您来说不是问题,您可以使用元标记每隔 N 秒重新加载页面。在您的情况下,这看起来是最简单的方法。详情:w3schools.com/tags/att_meta_http_equiv.asp