Python 将多个Dash应用程序集成到Flask中
我正在尝试将多个Dash应用程序集成到一个Flask应用程序中,但无法做到这一点 我能够使用以下结构将一个Dash应用程序集成到Flask中: 仪表板1.pyPython 将多个Dash应用程序集成到Flask中,python,flask,plotly-dash,Python,Flask,Plotly Dash,我正在尝试将多个Dash应用程序集成到一个Flask应用程序中,但无法做到这一点 我能够使用以下结构将一个Dash应用程序集成到Flask中: 仪表板1.py def create_dashboard(server): dash_app = dash.Dash(server=server, routes_pathname_prefix='/dash1/', external_stylesh
def create_dashboard(server):
dash_app = dash.Dash(server=server,
routes_pathname_prefix='/dash1/',
external_stylesheets=[dbc.themes.BOOTSTRAP],
)
....
return dash_app.server
init.py
from flask import Flask
from flask_assets import Environment
def create_app():
"""Construct core Flask application with embedded Dash app."""
f_app = Flask(__name__, instance_relative_config=False)
f_app.config.from_object('config.Config')
assets = Environment()
assets.init_app(f_app)
with f_app.app_context():
# Import parts of our core Flask app
from . import routes
from .assets import compile_static_assets
# Import Dash application
from .plotlydash.dashboard import create_dashboard
app = create_dashboard(f_app)
# Compile static assets
compile_static_assets(assets)
return app
from flask import Flask
from flask_assets import Environment
def create_app():
"""Construct core Flask application with embedded Dash app."""
f_app = Flask(__name__, instance_relative_config=False)
f_app.config.from_object('config.Config')
assets = Environment()
assets.init_app(f_app)
with f_app.app_context():
# Import parts of our core Flask app
from . import routes
from .assets import compile_static_assets
# Import Dash application
from .plotlydash.dashboard1 import create_dashboard
from .plotlydash.dashboard2 import create_dashboard2
app = create_dashboard(f_app)
app2 = create_dashboard2(f_app)
# Compile static assets
compile_static_assets(assets)
return app, app2
routes.py
from flask import render_template, redirect
from flask import current_app as app
@app.route('/dash1')
def dash1():
return render_template('dash1.html', app_data=app_data)
from flask import render_template, redirect
from flask import current_app as app
@app.route('/dash1')
def dash1():
return render_template('dash1.html', app_data=app_data)
@app.route('/dash2')
def dash2():
return render_template('dash2.html', app_data=app_data)
app.py
from application import create_app
app= create_app()
if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True)
from application import create_app
app, app2= create_app()
if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True)
app2.run(host='0.0.0.0', debug=True)
第一款Dash应用程序一切正常。我想在应用程序中创建另一个菜单/选项卡,并集成第二个dash应用程序。我怎么能这样做?我尝试了以下方法,但没有成功。只有第一个应用程序的链接起作用
仪表板2.py
def create_dashboard2(server):
dash_app = dash.Dash(server=server,
routes_pathname_prefix='/dash2/',
external_stylesheets=[dbc.themes.BOOTSTRAP],
)
....
return dash_app.server
init.py
from flask import Flask
from flask_assets import Environment
def create_app():
"""Construct core Flask application with embedded Dash app."""
f_app = Flask(__name__, instance_relative_config=False)
f_app.config.from_object('config.Config')
assets = Environment()
assets.init_app(f_app)
with f_app.app_context():
# Import parts of our core Flask app
from . import routes
from .assets import compile_static_assets
# Import Dash application
from .plotlydash.dashboard import create_dashboard
app = create_dashboard(f_app)
# Compile static assets
compile_static_assets(assets)
return app
from flask import Flask
from flask_assets import Environment
def create_app():
"""Construct core Flask application with embedded Dash app."""
f_app = Flask(__name__, instance_relative_config=False)
f_app.config.from_object('config.Config')
assets = Environment()
assets.init_app(f_app)
with f_app.app_context():
# Import parts of our core Flask app
from . import routes
from .assets import compile_static_assets
# Import Dash application
from .plotlydash.dashboard1 import create_dashboard
from .plotlydash.dashboard2 import create_dashboard2
app = create_dashboard(f_app)
app2 = create_dashboard2(f_app)
# Compile static assets
compile_static_assets(assets)
return app, app2
routes.py
from flask import render_template, redirect
from flask import current_app as app
@app.route('/dash1')
def dash1():
return render_template('dash1.html', app_data=app_data)
from flask import render_template, redirect
from flask import current_app as app
@app.route('/dash1')
def dash1():
return render_template('dash1.html', app_data=app_data)
@app.route('/dash2')
def dash2():
return render_template('dash2.html', app_data=app_data)
app.py
from application import create_app
app= create_app()
if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True)
from application import create_app
app, app2= create_app()
if __name__ == "__main__":
app.run(host='0.0.0.0', debug=True)
app2.run(host='0.0.0.0', debug=True)
你能帮我指出我可能做错了什么吗?我发现我错在路径@app.route(“/dash2/”)上加了一个“/”。删除“/”为我解决了问题。希望这篇文章可以帮助其他人,看看如何将Dash整合到烧瓶中,你有回购协议吗?官方教程没有显示如何以这种方式运行它,每个应用程序都要单独运行调用。您是如何初始化回调的?我发现我错误地在路径@app.route(“/dash2/”)上加了一个“/”号。删除“/”为我解决了问题。希望这篇文章可以帮助其他人,看看如何将Dash整合到烧瓶中,你有回购协议吗?官方教程没有显示如何通过为每个应用程序分别运行调用来以这种方式运行。您是如何初始化回调的?