Car*_*arl 6 python csv json html-table flask
我想知道是否有办法将 Flask 应用程序的响应作为由 JSON 响应键值对填充的 HTML 表返回,而不仅仅是在 HTML 页面上包含整个 JSON 字符串?
以下是我拥有的代码:
from flask import Flask
import json, pandas as pd
app = Flask(__name__)
@app.route("/GetData")
def GetData():
df = pd.read_csv("DemoData.csv")
temp = df.to_dict('records')
data = [dict(i) for i in temp]
return json.dumps(data, indent=4)
if __name__ == "__main__":
app.run(host='127.0.0.1', port=8000)
Run Code Online (Sandbox Code Playgroud)
上面的代码给出了以下响应:(URL:“ http://127.0.0.1:8000/GetData ”)
现在我想要的是在输入上述 URL 时将响应转换为表格,有点像 CSV 文件。
这是我的 CSV 文件示例:
员工姓名、城市、国家、分配的项目 Carl Elias,美国帕萨迪纳,光学字符识别 Amanda Jean Spears,美国丹佛,Linux Kali Security Mods John Reese,雅典,希腊,惯性导航系统 Leslie James,英国赫特福德郡,中继传输优化模组 Patrick Sullivan,伦敦,英国,欺诈检查系统 Julia Reginald Roberts,巴西圣保罗,用户认证系统 Michael Bucannan,美国旧金山,分析自动化工具 Jeanine Fitzgerald,安大略省,加拿大,CopyChecker Patricia Sullly,上海,中国,自动铣刀
你应该像 Alex Hall 所说的那样为它写一个模板。如果您遍历列名,它将不会被硬编码。首先,您应该导入 render_template。
from flask import Flask, render_template
Run Code Online (Sandbox Code Playgroud)
然后,您需要更改请求处理程序。这允许通过注入两个变量,记录和列名来呈现模板“record.html”。
@app.route("/GetData")
def GetData():
df = pd.read_csv("DemoData.csv")
temp = df.to_dict('records')
columnNames = df.columns.values
return render_template('record.html', records=temp, colnames=columnNames)
Run Code Online (Sandbox Code Playgroud)
检查此渲染模板指南。您需要创建一个新文件夹“templates/”,您可以在下面找到“templates/record.html”:
<table border="1">
<thead>
<tr>
{% for col in colnames %}
<th>{{ col }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
{% for record in records %}
<tr>
{% for col in colnames %}
<td>{{ record[col] }}</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
Run Code Online (Sandbox Code Playgroud)
要动态执行此操作,首先您应该遍历列名。正如 Alex Hall 所说,dict 不是有序的,因此在迭代记录时,您还应该迭代列名,这样您就可以按正确的顺序编写它们。
| 归档时间: |
|
| 查看次数: |
11632 次 |
| 最近记录: |