python - 获取 Flask JSON 响应作为 HTML 表?

标签 python json csv flask html-table

我想知道是否有办法将我的 Flask 应用程序的响应作为由 JSON 响应键值对填充的 HTML 表返回,而不是仅仅将整个 JSON 字符串放在 HTML 页面上?

下面是我的代码:

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)

上面的代码给出了以下响应:(URL:“http://127.0.0.1:8000/GetData”)

current output

现在我想要的是在输入上述 URL 后将响应转换为表格,有点像 CSV 文件。

这是我的 CSV 文件的示例:

Employee Name,City,Country,Project Assigned
Carl Elias,Passadena,USA,Optical Character Recognition
Amanda Jean Spears,Denver,USA,Linux Kali Security Mods
John Reese,Athens,Greece,Inertial Navigation System
Leslie James,Heartfordshire,United Kingdom,Relay Transmission Optimisation Mods
Patrick Sullivan,London,United Kingdom,Fraud Checking System
Julia Reginald Roberts,Sao Paolo,Brazil,User Authentication System
Michael Bucannan,San Franscisco,USA,Analytics Automation Tool
Jeanine Fitzgerald,Ontario,Canada,CopyChecker
Patricia Sullly,Shanghai,China,Automated Milling Tool

最佳答案

你应该像 Alex Hall 说的那样为它写一个模板。 如果您遍历列名,它不会被硬编码。 首先,您应该导入 render_template。

from flask import Flask, render_template

然后,您需要更改您的请求处理程序。这允许通过注入(inject)两个变量 records 和 colnames 呈现模板“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)

Check this rendering template guide.您需要创建一个新文件夹“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>

要动态执行此操作,首先您应该遍历列名。正如 Alex Hall 所说,dict 是无序的,因此在迭代记录时,您还应该迭代列名,以便按正确的顺序编写它们。

关于python - 获取 Flask JSON 响应作为 HTML 表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49964340/

相关文章:

python - 如何使用 cv2 计算图像中的不同颗粒?

数据帧列中的 Python 正则表达式

python - Config Parser Python - 如何读取 json 文件?

python - 使用 CSV 文件加速 SQLite3 UPDATE 功能

PHP - 导出 CSV 函数为每个条目重复标题

python - 比较 CSV 文件中列中的条目并提取匹配项 - python

python - 在 Flask 工厂设置中反射(reflect)不同的数据库

python - 将数据源信息附加到 pandas 系列

javascript - 将多维 JSON 数组转换为 JS 变量

php - json_encode - PHP 给出不完整的 json 字符串