我的数据框包含一个包含<canvas> something </canvas>
元素的列。在flask
应用程序中,我使用df.to_html()
将此数据传递给模板,但它永远不会正常工作,并始终在显示的html表格中显示<canvas>
。
答案 0 :(得分:2)
要在<, >, and &
方法中显示字符to_html()
符号,我们需要将escape
属性更改为False
。因为默认情况下to_html
方法会将字符<, >, and &
转换为HTML安全序列。此外,我们需要在模板文件中使用safe
过滤器来显示表格内的标签。
由于您已经找到了如何在Flask模板中正确显示HTML,我将举例说明未来读者的操作。
app.py
包含一个包含html
标记的数据框,我们希望在模板中呈现这些标记:
import pandas as pd
from flask import Flask, render_template
def get_panda_data():
tags = ["<h1>Example header</h1>",
'<div style="color: red;">Example div</div>',
'<input type="text" name="example_form" \
placeholder="Example input form">'
]
pd.set_option('display.max_colwidth', -1)
tags_frame = pd.DataFrame(tags, columns = ["Tag Example"])
tags_html = tags_frame.to_html(escape=False)
return tags_html
app = Flask(__name__)
@app.route('/')
def index():
html_data = get_panda_data()
return render_template("dataframe_example.html", html_data = html_data)
if __name__ == '__main__':
app.run(debug = True)
然后在模板文件dataframe_example.html
中,我们可以轻松地显示由pandas to_html
方法生成的数据表:
<!DOCTYPE html>
<html>
<head>
<title>Dataframe Flask Example</title>
</head>
<body>
<h1>Dataframe Flask Example</h1>
{{ html_data | safe }}
</body>
</html>
输出如下:
答案 1 :(得分:0)
我意识到我必须使用选项to_html(escape=False)
来解决这个问题