Используя Dash Plotly, я создал панель мониторинга и таблицу данных. Я хочу отобразить их на двух отдельных страницах. Когда я запускаю код, видна только панель мониторинга. Как отобразить таблицу данных в другом окне или вкладке?
import dash
from dash import html
from dash import dcc
from dash.dependencies import Input, Output
from dash.exceptions import PreventUpdate
from dash import dash_table
from app1 import app as app1
from app2 import app as app2
app = dash.Dash(__name__)
app.layout = html.Div([
dcc.Location(id='url', refresh=False),
html.Div(id='page-content')
])
@app.callback(Output('page-content', 'children'),
[Input('url', 'pathname')])
def display_page(pathname):
if pathname == '/app1':
return app1.layout
elif pathname == '/app2':
return app2.layout
else:
return '404 - Not Found'
if __name__ == '__main__':
app.run_server(debug=True)
Для этого вы можете использовать многостраничные URL-адреса в сюжетном тире: https://dash.plotly.com/urls
Вот минимальный рабочий пример многостраничных тире (в основном скопированный из одного из примеров в тире - многостраничных). Вы можете изменить это в зависимости от вашего макета и данных.
from dash import Dash, dcc, html, Input, Output
app = Dash(__name__)
app.layout = html.Div([
dcc.Location(id='url', refresh=False),
html.Div(id='page-content')
])
index_page = html.Div([
html.H1('Welcome to the Multi-Page App Demo'),
html.A('Go to Page 1', href='/page-1', target='_blank'),
html.Br(),
html.A('Go to Page 2', href='/page-2', target='_blank'),
])
page_1_layout = html.Div([
html.H1('Page 1'),
html.P('This is the content of Page 1.'),
html.Br(),
html.A('Go to Page 2', href='/page-2', target='_blank'),
html.Br(),
html.A('Go back to home', href='/', target='_blank'),
])
page_2_layout = html.Div([
html.H1('Page 2'),
html.P('This is the content of Page 2.'),
html.Br(),
html.A('Go to Page 1', href='/page-1', target='_blank'),
html.Br(),
html.A('Go back to home', href='/', target='_blank'),
])
@app.callback(Output('page-content', 'children'), Input('url', 'pathname'))
def display_page(pathname):
if pathname == '/page-1':
return page_1_layout
elif pathname == '/page-2':
return page_2_layout
else:
return index_page
if __name__ == '__main__':
app.run_server(debug=True)
См. Dash.plotly.com/urls