python - 如何根据表单输入更新现有的Python Flask网页?

标签 python html forms flask

我正在尝试使用 Flask 构建一个预测 Web 应用程序。该应用程序应该接收用户输入,通过 python 训练的模型对其进行处理,然后将结果显示为输入表单旁边的图表。

我的代码如下所示:

HTML 表单:

<form class = "prediction-options" method = "post" action = "/prediction/results">
  <!--the input fields-->
</form>

Flask app.py

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

@app.route("/prediction/results", methods = ['POST'])
def predict():
    input_aqi = float(request.form['aqi'])/272
    input_pm2_5 = float(request.form['pm2_5'])/224
    input_pm10 = float(request.form['pm10'])/283
    input_so2 = float(request.form['so2'])/36
    input_no2 = float(request.form['no2'])/110
    input_co = float(request.form['co'])/1.83
    input_o3 = float(request.form['o3'])/124
    input_list = [[input_aqi,input_pm2_5,input_pm10,input_so2,input_no2,input_co,input_o3]]


    output_acute_bronchitis = model_acute_bronchitis.predict(input_list)
    output_asthma = model_asthma.predict(input_list)
    output_asthmatic_bronchitis = model_asthmatic_bronchitis.predict(input_list)
    output_aurti = model_aurti.predict(input_list)
    output_bronchitis = model_bronchitis.predict(input_list)
    output_pneumonia = model_pneumonia.predict(input_list)

    d = collections.OrderedDict()
    d['acute_bronchitis'] = output_acute_bronchitis[0]
    d['asthma'] = output_asthma[0]
    d['asthmatic_bronchitis'] = output_asthmatic_bronchitis[0]
    d['aurti'] = output_aurti[0]
    d['bronchitis'] = output_bronchitis[0]
    d['pneumonia'] = output_pneumonia[0]

    prediction = jsonify(d)
    return prediction

现在,我已成功接收用户输入并在“/prediction/results”页面上呈现预测结果。如何让结果显示在“/”页面上?我尝试这样做:

@app.route("/", methods = ['POST','GET'])
def main():
    if request.method == 'POST':
        def predict():
           #predict function that returns prediction
    return render_template('index.html')

但我总是收到 socket.error: [Errno 32] Broken pipeline 错误消息。我该怎么办?

最佳答案

您可以为此使用 session ,在预测路线的最后一行之前,将预测存储为

session['prediction'] = prediction

然后您可以在应用程序中的任何其他路径中访问,例如您可以将其用于 /

@app.route("/", methods = ['POST','GET'])
def main():
    if request.method == 'POST':
        pass

    prediction = session['prediction']

    return render_template('index.html', prediction=prediction)

关于python - 如何根据表单输入更新现有的Python Flask网页?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38641484/

相关文章:

javascript - 如何在对话框工具栏 Vuetifyjs + Vuejs 下截取抽屉导航

javascript - 基础 5 中的顶部栏断点

javascript - 从 javascript 插入 html

php - codeigniter 使用 jquery 显示表单成功消息?

python - 在函数内部运行 exec

python - Numpy - 将行添加到数组

python - Python类和错误

python - Pandas groupby 获取月份和年份值

php - Codeigniter提交后如何保值

c# - 多形式项目的录入方法是什么?