2017-08-23 348 views
9

我有一个现有的Flask应用程序,并且我想要一条路线到另一个应用程序。更具体地说,第二个应用程序是一个Plotly Dash应用程序。我如何在现有的Flask应用程序中运行我的Dash应用程序?在Flask应用程序中运行Dash应用程序

@app.route('/plotly_dashboard') 
def render_dashboard(): 
    # go to dash app 

我也尝试添加到短跑实例的路线,因为它是一个瓶的应用程序,但我得到的错误:

AttributeError: 'Dash' object has no attribute 'route' 

回答

10

docs

The underlying Flask app is available at app.server .

import dash 
app = dash.Dash(__name__) 
server = app.server 

You can also pass your own Flask app instance into Dash:

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

现在,你有Flask实例,你可以添加你需要的任何路由和其他功能。

@server.route('/hello') 
def hello(): 
    return 'Hello, World!' 

要更普遍的问题:“我怎么能起到相邻的另外两个瓶实例”,假设你最终不会使用一个实例作为上述短跑的答案,你会用DispatcherMiddleware安装这两个应用程序。

dash_app = Dash(__name__) 
flask_app = Flask(__name__) 

application = DispatcherMiddleware(flask_app, {'/dash': dash_app.server}) 
3

在您的Dash实例中设置url_base_pathname

app_flask = flask.Flask(__name__) 

app_dash = dash.Dash(__name__, server=app_flask, url_base_pathname='/pathname') 

现在,您可以在任何想要的烧瓶路线下重定向到您的Plotly Dashboard应用程序。

@app_flask.route('/plotly_dashboard') 
def render_dashboard(): 
    return flask.redirect('/pathname') 
相关问题