You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Flask中如何通过单个函数同时更新表格与Plotly图表?

Flask单接口同时更新表格与Plotly图表方案

核心思路

不用render_template,直接在/api/data接口返回包含表格数据和图表JSON的复合响应,前端分别处理这两部分数据即可。

后端实现(Flask)

修改/api/data接口,把表格数据和生成的graphJSON打包成一个字典返回:

from flask import Flask, jsonify
import plotly
import plotly.graph_objects as go
import json

app = Flask(__name__)

@app.route('/api/data')
def get_data():
    # 1. 获取/生成表格数据(沿用你原有逻辑)
    table_data = [
        {"id": 1, "name": "A", "value": 10},
        {"id": 2, "name": "B", "value": 20},
        {"id": 3, "name": "C", "value": 15}
    ]
    
    # 2. 生成Plotly柱状图并转为JSON格式
    fig = go.Figure(data=[go.Bar(x=[item['name'] for item in table_data], y=[item['value'] for item in table_data])])
    graph_json = json.dumps(fig, cls=plotly.utils.PlotlyJSONEncoder)
    
    # 3. 返回包含表格和图表数据的复合响应
    return jsonify({
        "table_data": table_data,
        "graph_json": graph_json
    })

if __name__ == '__main__':
    app.run(debug=True)

前端实现(JavaScript)

前端请求接口后,分别调用表格更新和图表更新的逻辑:

// 示例:用DataTables更新表格(替换成你实际用的表格组件逻辑)
function updateTable(data) {
    $('#data-table').DataTable().clear().rows.add(data).draw();
}

// 更新Plotly图表
function updateGraph(graphJson) {
    // 解析后端返回的JSON字符串为对象
    const fig = JSON.parse(graphJson);
    // 渲染到页面指定容器(确保页面有id为plotly-container的元素)
    Plotly.newPlot('plotly-container', fig.data, fig.layout);
}

// 发起请求并处理响应
fetch('/api/data')
    .then(res => res.json())
    .then(response => {
        updateTable(response.table_data);
        updateGraph(response.graph_json);
    })
    .catch(err => console.error('数据请求失败:', err));

常见问题排查

  • 确认前端正确解析graph_json:后端返回的是JSON字符串,必须用JSON.parse()转成对象后再传给Plotly
  • 检查图表容器的存在性:页面中要确保有对应id的DOM元素
  • 查看浏览器控制台:排查是否有JSON解析错误、Plotly未加载等报错

内容的提问来源于stack exchange,提问作者Dan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 10:12:31