Flask 将变量从浏览器发送到仪表板

Flask 将变量从浏览器发送到仪表板,flask,plotly,plotly-dash,Flask,Plotly,Plotly Dash,我在代码中使用value作为静态变量。当我运行这个时,我得到http://127.0.0.1:8050/ 在那里我可以看到我的dash应用程序。我需要一个动态变量的值,我可以在浏览器中传递。 例如,如果我在浏览器中键入,它应该显示198而不是270 非常感谢您的帮助: 共享代码并将结果输出为图像 import flask import dash import dash_html_components as html import plotly.graph_objects as go import

我在代码中使用value作为静态变量。当我运行这个时,我得到http://127.0.0.1:8050/ 在那里我可以看到我的dash应用程序。我需要一个动态变量的值,我可以在浏览器中传递。 例如,如果我在浏览器中键入,它应该显示198而不是270

非常感谢您的帮助:

共享代码并将结果输出为图像

import flask
import dash
import dash_html_components as html
import plotly.graph_objects as go
import dash_core_components as dcc

server = flask.Flask(__name__)
app = dash.Dash(__name__, server=server)

fig = go.Figure(go.Indicator(
    mode = "gauge+number",
    value = 270,
    domain = {'x': [0, 1], 'y': [0, 1]},
    title = {'text': "Speed"}))

app.layout = html.Div([
    dcc.Graph(
        id='life-exp-vs-gdp',
        figure=fig
    )
])
@server.route('/test', methods=['POST'])
def req():
    print('Request triggered!')  # For debugging purposes, prints to console
    

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

使用@app.callback更新图形

从dash.dependencies导入输入,输出

回调的输入是url-路径名,对于url,您需要在布局中添加dcc.Location-确保id与回调输入匹配。回调收到的路径名将包含/。它基本上是主机之后的路径:ip。删除/并将路径名转换为int,然后将此值指定给go.Figure中的图形值

输出是更新图形后的图形。确保布局中的图形id与回调输出id匹配

您的代码如下所示:

import dash
import dash_core_components as dcc
import dash_html_components as html
import flask
import plotly.graph_objects as go
from dash.dependencies import Input, Output

server = flask.Flask(__name__)
app = dash.Dash(__name__, server=server)

app.layout = html.Div([
    dcc.Location(id='url', refresh=False),
    dcc.Graph(
        id='life-exp-vs-gdp'
    )
])


@app.callback(Output('life-exp-vs-gdp', 'figure'), Input('url', 'pathname'))
def display_page(pathname):
    if pathname == "/":
        pathname = 200
    else:
        pathname = int(pathname.strip('/'))

    fig = go.Figure(go.Indicator(
        mode="gauge+number",
        value=pathname,
        domain={'x': [0, 1], 'y': [0, 1]},
        title={'text': "Speed"}))
    return fig


if __name__ == '__main__':
    app.run_server(debug=True)
因此,如果打开:,则仪表中会有一些默认值。如果你打开:,这将在仪表中有198个值

我希望这是有用的