【问题标题】:Render three dimensional JSON list to HTML template in FLASK将三维 JSON 列表渲染为 FLASK 中的 HTML 模板
【发布时间】:2018-07-07 21:07:41
【问题描述】:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Predictions</title>
</head>
<body>
<div class="results">
     <table>
         {% for item in summary %}
             <tr><td>
             {{ item['Name'] }}
             </td></tr>
         {% endfor %}
     </table>
</div>
</body>
</html>

我想要在 HTML 模板中显示的三维 JSON 列表。 下面是我的代码,我无法确定我哪里出错了。我尝试了很多以前回答过的问题,但没有用,因此决定创建一个新问题,但无法找到三维列表的解决方案。

from flask import Flask, abort, request,render_template, json
from DataPreparationv4 import Data_Preprocess
import numpy as np
import pandas as pd
import pickle
from flask_jsonpify import jsonpify

pd.options.mode.chained_assignment = None

filename = 'Test2.pkl'
loaded_model = pickle.load(open(filename, 'rb'))

app = Flask(__name__)

@app.route("/", methods=['GET'])
def Predictions():
#Loading Data
    Base_Data = pd.read_csv('Test.csv')

#Calling customized function for data pre process

    DataSet1 = Data_Preprocess(Base_Data)

    CaseNumber = DataSet1[1]
    DataSet1 = DataSet1[0]
#loading the ML Model
    result = loaded_model.predict(DataSet1)

    prob = loaded_model.predict_proba(DataSet1)

#Extracting the probabilities
    Predictions = pd.DataFrame({'CTA Code':result,'Prob1':prob[:,0],'Prob2':prob[:,1]})

# Getting the probability of the prediction
    Predictions['Probability'] = np.where(Predictions['Prob1'] > Predictions['Prob2'], 
               Predictions['Prob1'], Predictions['Prob2'])

    Predictions['CaseNumber'] = CaseNumber['Case Number']

    CTA_Map = [['Y',1],['N',0]]
    CTA_Map = pd.DataFrame(CTA_Map,columns=['CTA Met','CTA Code'],dtype=float)

# Converting the 0 or 1 predictions to "Y" or "N"
    Predictions = pd.merge(Predictions,CTA_Map[['CTA Code','CTA Met']],on='CTA Code', how='left')
    Predictions =  Predictions.drop(['CTA Code','Prob1','Prob2'], axis=1)
    Predictions = Predictions[['CaseNumber', 'CTA Met', 'Probability']]

    #Converting Data frame to list
    df_list = Predictions.values.tolist()


    JSONP_data = jsonpify(df_list)

    return render_template('hello5.html', summary=JSONP_data)

if __name__ == '__main__':
app.run(host='0.0.0.0',port=5000,debug = True)

下面是 HTML 代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Predictions</title>
</head>
<body>
<div class="results">
     <table>
         {% for item in summary %}
             <tr><td>
             {{ item['Name'] }}
             </td></tr>
         {% endfor %}
     </table>
</div>
</body>
</html>

我在浏览器上收到以下错误:

Internal Server Error 服务器遇到内部错误并且被 无法完成您的请求。服务器过载或 应用程序出现错误。

在命令提示符下:我收到此错误。

文件“D:\Cisco_June Data\templates\hello5.html”,第 3 行,位于顶层 模板代码 {% for item in summary %} TypeError: 'Response' object is not iterable

我正在寻找这样的桌子 Sample Table

JSONP_data 变量中的 JSON 列表示例:

[[33314116979, "Y", 1.0], [33319019191, "Y", 1.0], [33317767878, "N", 0.8006605339105347], [33314115916, "Y", 0.9613333333333333], [33314000397, "Y", 0.8899768072726529], [33318214829, "N", 1.0]

请求您提供指导以解决此问题。

【问题讨论】:

  • 这是什么行为?预期的行为是什么?请给我们一个 JSONP_data 的例子。我们必须能够重现您的问题。
  • @Gelineau,按照指示,我添加了在浏览器和 anaconda 命令提示符中遇到的错误。预期输出的图像。
  • @Gelineau,也是JSONP_data的样本

标签: json python-3.x flask


【解决方案1】:

尝试将 df_list 发送到您的模板,而不是调用 jsonpify。

jsonpify 生成一个旨在通过 http 发送的响应对象,而不是在模板中迭代 请参阅 stackoverflow.com/questions/7907596/json-dumps-vs-flask-jsonify

【讨论】:

  • 感谢您的指导。我可以将列表展示为 html 模板中的列表。是否有任何指南/教程可供我参考将列表转换为 html 模板或将数据框作为表格呈现为 html 模板
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-28
  • 1970-01-01
  • 2011-05-16
  • 1970-01-01
  • 2010-12-18
  • 1970-01-01
相关资源
最近更新 更多