2017-08-23 391 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') 
相關問題