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