zth*_*.nc 39 python flask plotly-dash
我有一个现有的Flask应用程序,我希望有一个到另一个应用程序的路由.更具体地说,第二个应用程序是Plotly Dash应用程序.如何在现有的Flask应用程序中运行我的Dash应用程序?
@app.route('/plotly_dashboard')
def render_dashboard():
# go to dash app
Run Code Online (Sandbox Code Playgroud)
我还尝试添加一个到Dash实例的路由,因为它是一个Flask应用程序,但我收到错误:
AttributeError: 'Dash' object has no attribute 'route'
Run Code Online (Sandbox Code Playgroud)
dav*_*ism 42
来自文档:
基础Flask应用程序可在以下位置获得
app.server.Run Code Online (Sandbox Code Playgroud)import dash app = dash.Dash(__name__) server = app.server您还可以将自己的Flask应用实例传递给Dash:
Run Code Online (Sandbox Code Playgroud)import flask server = flask.Flask(__name__) app = dash.Dash(__name__, server=server)
现在您已经拥有了Flask实例,您可以添加所需的任何路由和其他功能.
@server.route('/hello')
def hello():
return 'Hello, World!'
Run Code Online (Sandbox Code Playgroud)
对于更一般的问题"我如何能够彼此相邻地提供两个Flask实例",假设您最终没有像上面的Dash答案那样使用一个实例,那么您将使用DispatcherMiddleware两个应用程序来安装.
dash_app = Dash(__name__)
flask_app = Flask(__name__)
application = DispatcherMiddleware(flask_app, {'/dash': dash_app.server})
Run Code Online (Sandbox Code Playgroud)
小智 27
url_base_pathname在您的Dash实例中设置.
app_flask = flask.Flask(__name__)
app_dash = dash.Dash(__name__, server=app_flask, url_base_pathname='/pathname')
Run Code Online (Sandbox Code Playgroud)
现在,您可以在任何您想要的Flask路线下重定向到您的Plotly Dashboard应用程序.
@app_flask.route('/plotly_dashboard')
def render_dashboard():
return flask.redirect('/pathname')
Run Code Online (Sandbox Code Playgroud)
对于像我这样懒惰的人来说,这是代码
from dash import Dash
from werkzeug.wsgi import DispatcherMiddleware
import flask
from werkzeug.serving import run_simple
import dash_html_components as html
server = flask.Flask(__name__)
dash_app1 = Dash(__name__, server = server, url_base_pathname='/dashboard' )
dash_app2 = Dash(__name__, server = server, url_base_pathname='/reports')
dash_app1.layout = html.Div([html.H1('Hi there, I am app1 for dashboards')])
dash_app2.layout = html.Div([html.H1('Hi there, I am app2 for reports')])
@server.route('/')
@server.route('/hello')
def hello():
return 'hello world!'
@server.route('/dashboard')
def render_dashboard():
return flask.redirect('/dash1')
@server.route('/reports')
def render_reports():
return flask.redirect('/dash2')
app = DispatcherMiddleware(server, {
'/dash1': dash_app1.server,
'/dash2': dash_app2.server
})
run_simple('0.0.0.0', 8080, app, use_reloader=True, use_debugger=True)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21833 次 |
| 最近记录: |