2017-08-23 25 views
9

Tôi có ứng dụng Flask hiện có và tôi muốn có một tuyến đường đến một ứng dụng khác. Cụ thể hơn, ứng dụng thứ hai là ứng dụng Plotly Dash. Làm cách nào để chạy ứng dụng Dash trong ứng dụng Flask hiện có của tôi?Chạy ứng dụng Dash trong ứng dụng Flask

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

Tôi cũng đã cố gắng thêm một lộ trình để các trường hợp Dash, vì nó là một ứng dụng Flask, nhưng tôi nhận được lỗi:

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

Trả lời

10

Từ 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) 

Bây giờ bạn có thể hiện Flask, bạn có thể thêm bất kỳ tuyến đường nào và các chức năng khác mà bạn cần.

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

Với câu hỏi tổng quát hơn "làm thế nào tôi có thể phục vụ hai trường hợp Flask cạnh nhau", giả sử bạn không kết thúc bằng một ví dụ như trong các câu trả lời Dash trên, bạn sẽ sử dụng DispatcherMiddleware để gắn kết cả hai ứng dụng.

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

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

Đặt url_base_pathname trong ví dụ Dash của bạn.

app_flask = flask.Flask(__name__) 

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

Bây giờ bạn có thể chuyển hướng đến ứng dụng Trang tổng quan theo bất kỳ tuyến đường Flask nào bạn muốn.

@app_flask.route('/plotly_dashboard') 
def render_dashboard(): 
    return flask.redirect('/pathname') 
Các vấn đề liên quan