【问题标题】:Flask producing HTML table as a string, not a table (Python 2) [duplicate]Flask 将 HTML 表生成为字符串,而不是表(Python 2)[重复]
【发布时间】:2017-06-21 15:51:27
【问题描述】:

当我尝试使用 Flask 将一些数据写入 HTML 表时,我看到了一个奇怪的问题。当页面加载时,它会将数据打印成一个长字符串,如下所示:

<table class="table table-striped table-hover"><tr><th> Task </th><th> duration </th><th> points </th></tr><tr><td>50 Pullups</td><td>15</td><td>0.5000</tr><tr><td>5K Run</td><td>45</td><td>1.0000</tr><tr><td>Abs of Steel</td><td>30</td><td>1.0000</tr><tr><td>Data Science Study</td><td>60</td><td>1.0000</tr><tr><td>Drums</td><td>30</td><td>1.0000</tr><tr><td>Kegel</td><td>10</td><td>1.0000</tr><tr><td>Metta Bhavna</td><td>25</td><td>1.0000</tr><tr><td>Mindfulness</td><td>30</td><td>1.0000</tr><tr><td>Physio</td><td>10</td><td>1.0000</tr><tr><td>Singing</td><td>30</td><td>1.0000</tr><tr><td>Skipping</td><td>15</td><td>0.0000</tr><tr><td>Sprint</td><td>20</td><td>1.0000</tr><tr><td>Typing</td><td>10</td><td>1.0000</tr><tr><td>Yoga</td><td>15</td><td>1.0000</tr></table>

但是,将它呈现为表格显然会很棒。请注意,当我将该 HTML 代码复制到页面源代码中时,它呈现得很好(因此 HTML 本身没有问题。)

我的环境设置如下:NBfetch_results是一个查询mysql数据库并以字符串格式返回结果的脚本。

import os
from flask import Flask, render_template

@app.route('/')
def table_maker():
    from myfunctions import fetch_results
    table = fetch_results()
    return render_template('home.html', table = table)

页面源包含:

<div class="container">
    {{ table }}
</div>

非常感谢您的帮助。

【问题讨论】:

  • 你能截图你的html页面吗?试试{{ table|safe }}
  • {{ table|safe }} 就像一个魅力!谢谢。你有什么指南可以让我在文献中找到这样的把戏吗?粗略搜索“Python Flask Safe HTML”并没有给我任何暗示该解决方案的信息。

标签: python flask html-table


【解决方案1】:

使用{{ table|safe }}

@987654321@ 是 Jinja2 内置过滤器之一,您可以使用它来解决您的问题。

安全过滤器明确将字符串标记为“安全”,即,如果启用了自动转义,则不应自动转义。

【讨论】:

    猜你喜欢
    • 2023-01-22
    • 2016-03-25
    • 2016-10-17
    • 2012-10-23
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多