无法通过使用 CherryPy 框架将 Plotly table 渲染到 html - table 已成功创建并保存到 temp-plot.html

Cannot render Plotly table to html via using CherryPy framework - table is created successfully and saved to temp-plot.html

我已经使用 pandas df 格式的数据成功创建了 Plotly table。

然而,在到达我的路线时,table 被创建,但存储在 temp-plot.html 文件中,我希望它呈现的页面仅将 temp-plot.html 显示为文本, 但没有别的。

我知道 table 已正确创建,因为如果我打开 html 文件,我会看到 table 和我的数据。

我不想使用模板语言 (Jinja2),因为不幸的是,这个应用程序没有在任何地方使用它,我不想做很多重构。

我想简单地 renderopen 我的 html 文件,但也发送那个情节。

我试过将数据作为参数发送给 open(),但它说它只支持字符串。

我试过了render(),但是cherryPy好像没有那个方法

@cherrypy.expose()
def my_table(self):
    dbtable = db.get_table('v_data')
    with db.session_scope('my_table()') as session:

        query = <get all my data from this table>

        df = pd.DataFrame.from_dict(query)
        trace = go.Table(
            header=dict(values=list(df.columns),
                        fill=dict(color='#C2D4FF'),
                        align=['left'] * 5),
            cells=dict(values=[my_headers],
                       fill=dict(color='#F5F8FF'),
                       align=['left'] * 5))

    data = [trace]
    sp_table = plot(data)
    return sp_table

我希望 table 呈现到 html 页面,但我得到 html 页面的文本标题,但没有错误。由 plotly open 生成的 html 页面显示 table 就好了。

您应该为 plot 函数使用 div 输出格式...并阅读更多内容 their docs。但是要回答您的问题,关于如何提供生成的 html,您可以使用 cherrypy.lib.static.serve_file

提供文件
import os.path
from cherrypy.lib.static import serve_file

# [...]

@cherrypy.expose()
def my_table(self):
    dbtable = db.get_table('v_data')
    with db.session_scope('my_table()') as session:

        query = <get all my data from this table>

        df = pd.DataFrame.from_dict(query)
        trace = go.Table(
            header=dict(values=list(df.columns),
                        fill=dict(color='#C2D4FF'),
                        align=['left'] * 5),
            cells=dict(values=[my_headers],
                       fill=dict(color='#F5F8FF'),
                       align=['left'] * 5))

    data = [trace]
    # assuming "plot" returns the filename
    # (otherwise set the `filename` arg in `plot`) and
    # the file is generated in the current directory
    sp_table = os.path.abspath(plot(data))
    return serve_file(sp_table)