Flask Dash将在回调中生成的变量传递给另一个回调

时间:2019-06-25 22:17:19

标签: python flask plotly-dash

在回调中,根据用户输入创建数据框。我需要在另一个函数中使用该数据框,以便将其提供给用户。 我读到server.route可以通过Flask SendFile做到这一点,但由于无法使用全局变量,因此无法访问数据框。

我已经阅读了一个隐藏的div方法,但是我不知道如何从python内部访问html div属性。

'''

server = flask.Flask('app')

app = dash.Dash(__name__,
external_stylesheets=external_css,
server=server)

master = pd.read_csv('master_dataframe.csv')

@server.route("/downloadable/")

def download_file():

    df = # The dataframe I need that is in the other function
    buffer = io.BytesIO()
    dff.to_excel(buffer)  # write to BytesIO buffer
    buffer.seek(0)
    return send_file(
        buffer,
        attachment_filename='data.xlsx',
        as_attachment=True,
        cache_timeout=0
    )
@app.callback(
    Output('plot_button','n_clicks_timestamp'),
    [Input('account_selector','value')]
)
def generate_layout(value):
    df = make_something(master, value)
    return html_layout

'''

1 个答案:

答案 0 :(得分:0)

您可以将数据帧的内容以JSON格式输出到带有children的{​​{1}}的{​​{1}}道具。然后使用另一个带有该div的{​​{1}}作为其display='none'的回调,您将能够读取JSON并使用该数据。

简单示例:

children