json - 将三维 JSON 列表渲染为 FLASK 中的 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>
我有要在 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>
我在浏览器上收到以下错误:
内部服务器错误 服务器遇到内部错误,无法完成您的请求。服务器过载或应用程序出错。
在命令提示符下:我收到此错误。
顶级模板代码中的文件“D:\Cisco_June Data\templates\hello5.html”第 3 行 {% for item in summary %} TypeError: 'Response' object is not iterable
我正在寻找这样的表格 示例表
JSONP_data 变量中的 JSON 列表示例:
[[[33314116979,“ y”,1.0],[33319019191,“ y”,1.0],[333317767878,“ N”,0.8006605339105347] , [33318214829, "N", 1.0]
请求您的指导以解决此问题。
解决方案
尝试将 df_list 发送到您的模板,而不是调用 jsonpify。
jsonpify 生成一个旨在通过 http 发送的响应对象,而不是在模板中迭代 请参阅 stackoverflow.com/questions/7907596/json-dumps-vs-flask-jsonify
推荐阅读
- eclipse - Resource Path Location failed find jar 缓存在本地 repo 中,直到更新间隔过去或结束后才会重新尝试解析
- node.js - 节点安装有时有@,但并不总是
- docker - Docker 的 PGAdmin4 不显示查询结果
- python - 我在熊猫中有一个文本列,我有一个包含一些单词的列表。我需要将每行中的文本与列表中的单词匹配并保留它们
- prolog - 带变量的 Prolog DCG
- python - 将 json 数据保存到 Django 模型
- visual-studio - 如何使用具有相对路径的 XCOPY Visual Studio Post Build 命令
- xamarin.forms - Xamarin 表单:如何在聊天中显示未读消息数?
- go - 如何使用 golang 从 ftp 服务器下载文件
- typescript - 如何防止 obj 属性上的红色下划线