【发布时间】:2020-08-02 13:59:58
【问题描述】:
我想为我的 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')
)
问题是索引函数返回的是render_template。相反,我想从我的 ML 项目中运行一些 python 代码,同时在代码运行时更新 index.html 中的 HTML。
例如,假设你有一些 python 代码:
print('Reading text from csv file...')
dataframe = pd.read_csv('helo.csv')
print('Done reading...')
如何让这段代码在烧瓶中运行,而不是打印;我更改了
的 innerHTML我的主 html 文件中的标签?
【问题讨论】:
-
详细了解 Flask 中的模板 - 您可以发送具有不同值的参数,然后您可以获得具有不同值的 HTML。 -
render_template('index.html', data=dataframe)但它需要重新加载整页。如果你想在不重新加载的情况下更新,那么你必须学习 JavaScript 和 AJAX (XHR) 或使用 JavaScript 的模块,如jQUery,它具有函数$.ajax()。 -
顺便说一句:你甚至可以使用
df.to_html()来渲染<table>,你可以在HTML中显示render_template('index.html', table=df.to_html()) -
谢谢!我最初使用的是 streamlit,但问题是每次用户与 UI 交互时它都会重新运行整个脚本。我的程序很长,由许多顺序进程组成,我想在 UI 上向用户显示所有这些进程,并且他们可以与之交互。这就是为什么我认为 Flask 效果更好,正如你所说,我可能需要使用 AJAX。本质上,我想要做的只是运行我通常的 python 程序,但我希望它显示在网页/应用程序上,而不是出现在 python 控制台中的输入(例如输入('输入集群数')等)跨度>
-
然后当用户输入到 webapp 时,python 代码会继续运行,直到下一个输入/绘图。然后,webapp 上的 html 必须更改以请求此输入。用户输入,然后 python 代码继续运行。重复直到程序结束
标签: javascript python html flask web-applications