如何将 Pandas 字典数据转换为 Python Flask 的 Jinja HTML

How to convert Pandas dictonary data to Jijna HTML of Python Flask

我的 python 代码版本 3 生成了这个字典值。

@app.route('/rulebook',methods = ['POST','GET'])
def rulebook():
    data = pd.read_excel('rule_book.xlsx')
    pd_data = data.to_dict()
    print(pd_data)
    return render_template('rulebook.html', titlepage = 'RuleBook',pd_data=pd_data)

输出:-

{'RULE_CODE': {0: 'R001', 1: 'R002'}, 'RULE_DESC': {0: 'ACT vs ANT1', 1: 'MEMvs SCREEN'}, 'COMMENTS': {0: 'Validation', 1: 'source Load'}}

我需要将该字典用于 jinja HTML 代码,如下所示。

<table>
{% for t in pd_data %}
    <tr>
    {% for i in t %}
        <td>{{ i }}</td>
    {% endfor %}
    </tr>
{% endfor %}
</table>

期望的输出:

可以直接将DataFrame转换成HTML。并在 Jinja 内使用安全过滤器,例如 {pd_data|safe}

def rulebook():
    data = pd.read_excel('rule_book.xlsx')
    pd_data = data.to_html()

引用here

如果您正在寻找简单的神社模板,您可以使用它。它将 DataFrame 转换为 html-table:

后端:

@app.route("/")
def index():
    aa={'RULE_CODE': {0: 'R001', 1: 'R002'}, 'RULE_DESC': {0: 'ACT vs ANT1', 1: 'MEMvs SCREEN'}, 'COMMENTS': {0: 'Validation', 1: 'source Load'}}
    df=pd.DataFrame(aa)
    print(df.columns.values)
    return render_template('index.html',column_names=df.columns.values,row_data=list(df.values.tolist()), zip=zip)

前端:

<table>
    <thead>
        <tr>
            {% for col in column_names  %}
                <th> {{col}} </th>
            {% endfor %}
        </tr>
    </thead>
<tbody>
    {% for row in row_data %}
        <tr>
            {% for col, row_ in zip(column_names, row) %}
                <td> {{row_}} </td>
            {% endfor %}
        </tr>
    {% endfor %}
</tbody>
</table>