Javascript 在Flask中运行python脚本时动态更改HTML

Javascript 在Flask中运行python脚本时动态更改HTML,javascript,python,html,flask,web-applications,Javascript,Python,Html,Flask,Web Applications,我想为我的ML项目创建一个webapp。我在烧瓶里有这个代码: from flask import Flask, render_template, request, url_for, flash, redirect app = Flask(__name__) app.config["DEBUG"] = True @app.route('/') def index(): return( render_template('index.html

我想为我的ML项目创建一个webapp。我在烧瓶里有这个代码:

from flask import Flask, render_template, request, url_for, flash, redirect

app = Flask(__name__)
app.config["DEBUG"] = True

@app.route('/')
def index():
    
    return(
        render_template('index.html')


    )
问题是index函数返回render_模板。相反,我想从我的ML项目中运行一些python代码,同时在代码运行时更新index.HTML中的HTML

例如,假设您有一些python代码:

print('Reading text from csv file...')
dataframe = pd.read_csv('helo.csv')
print('Done reading...')

我如何让这个代码在烧瓶中运行,而不是打印;我更改了主html文件中标记的innerHTML?

您可以在javascript中使用XMLHttpRequest。因此,浏览器将加载index.html,而不是在后台加载。它可以每隔几秒钟向服务器询问一些数据(使用setTimeOut)。一旦服务器确认它已经运行完ML代码。浏览器可以自动对此做出反应


了解有关Flask中模板的更多信息-您可以发送具有不同值的参数,然后可以获取具有不同值的HTML。-<代码>呈现模板('index.html',data=dataframe)但需要重新加载整个页面。如果您想在不重新加载的情况下进行更新,那么您必须学习JavaScript和AJAX(
XHR
),或者使用JavaScript模块,如
jQUery
,该模块具有函数
$.AJAX()
。如果您想在网页上使用DataFrame,那么可能需要为此使用特殊模块-。其中一些是基于
Flask
BTW的:您甚至可以使用
df.to\u html()
来呈现
,您可以在html
render\u模板('index.html',table=df.to\u html())中显示
谢谢!我最初使用streamlit,但问题是每次用户与UI交互时都会重新运行整个脚本。我的程序相当长,由许多顺序进程组成,所有这些进程我都想在UI上显示给用户,用户可以与之交互。这就是为什么我认为Flask工作得更好,正如您所说,我可能需要使用AJAX。基本上,我想做的就是运行通常的python程序,但不是在python控制台中显示输入(“输入集群数”)等输入,而是希望它显示在网页/app上,然后作为用户对webapp的输入,python代码继续运行,直到下一个输入/绘图。然后,webapp上的html必须更改以请求此输入。用户输入,然后python代码继续运行。重复,直到程序完成