gpt4 book ai didi

python - 在 python 上用 html 格式化 flask 表输出

转载 作者:行者123 更新时间:2023-12-04 00:57:04 25 4
gpt4 key购买 nike

这里不是一个非常有经验的python用户,只是在家中拿起python。我正在研究将 flask 表的输出集成到网站。以下是我的 Python 代码,它为我的网站创建了一个简单的表格。

    from flask_table import Table, Col

app = Flask(__name__)

class ItemTable(Table):
name = Col('Name')
description = Col('Description')

Class Item(object):
def __init__(self, name, description):
self.name = name
self.description = description

items = [dict(name='Name1', description='Description1'),
dict(name='Name2', description='Description2'),
dict(name='Name3', description='Description3')]

table = ItemTable(items)


@app.route("/")
def hello():
return render_template('index.html', tStrToLoad=table.__html__())

if __name__ == "__main__":
app.run()

和我的 html 代码,它从上面的 python 代码中获取 tStrToLoad 来显示。
<html>
<head>
<title>Test Flask Table</title>
<style>
body
{
background-color: #000000;
color: #FFFFFF;
font-family:Verdana;
font-size:16px;
}
table, th, td
{
border: 1px solid #0088ff;
border-collapse: collapse;
padding: 3px;
font-family:Verdana;
font-size:12px;
text-align: left;
}

</style>
</head>
<body>
a simple test table
<br/><br/>

{{ tStrToLoad }}

</body>
</html>

我没有显示包含数据的表格,而是在黑色背景中显示以下输出
a simple test table

<table> <thead><tr><th>Name</th><th>Description</th></tr></thead> <tbody> <tr><td>Name1</td><td>Description1</td></tr> <tr><td>Name2</td><td>Description2</td></tr> <tr><td>Name3</td><td>Description3</td></tr> </tbody> </table>

经过进一步调查,我做了一个查看页面源代码,这是我由此产生的实际 html 代码。
<html>
<head>
<title>Test Flask Table</title>
<style>
body
{
background-color: #000000;
color: #FFFFFF;
font-family:Verdana;
font-size:16px;
}
table, th, td
{
border: 1px solid #0088ff;
border-collapse: collapse;
padding: 3px;
font-family:Verdana;
font-size:12px;
text-align: left;
}

</style>
</head>
<body>
a simple test table
<br/><br/>

&lt;table&gt;
&lt;thead&gt;&lt;tr&gt;&lt;th&gt;Name&lt;/th&gt;&lt;th&gt;Description&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;td&gt;Name1&lt;/td&gt;&lt;td&gt;Description1&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Name2&lt;/td&gt;&lt;td&gt;Description2&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td&gt;Name3&lt;/td&gt;&lt;td&gt;Description3&lt;/td&gt;&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

</body>
</html>

我的问题是如何在我的 python 脚本中正确格式化它,以便它发送 < 和 > 而不是 & lt;和 & gt;

最佳答案

如果您确信表中的数据都没有未经验证的用户输入,那么告诉 Jinja 不要转义 html:

{{ tStrToLoad | safe }}
但是,您可能希望避免使用 Flask 表,而只需自己传递项目列表。如果您还在单独的列表中传递一些标题,模板代码可以变得更加通用:
        headers = ['Name','Description']
return render_template('index.html',
headers = headers,
objects = items)
然后手动建表:
{% if objects %}
<table id='result' class='display'>
<thead>
<tr>
{% for header in headers %}
<th>{{header}}</th>
{% endfor %}
</tr>
</thead>

<tbody>
{% for object in objects %}
<tr>
{% for k, val in object.items() %}
<td>{{val}}</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
{% endif %}
如您所见,这可以防止您将任何值硬编码到模板中。
此表的语法也与数据表兼容,因此如果您按照 zero configuration 示例加载 CSS 和 JS 文件,那么您的表会变得更漂亮,并且可以具有内置的搜索栏和分页。如果您需要有关如何执行此操作的进一步指导,请告诉我。

关于python - 在 python 上用 html 格式化 flask 表输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61620432/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com