我已经完成了 Flask 与 Dash 的集成(归功于来源),文件结构如下...
/<main_app>
|
|
- <app>
| |-----__init__.py
|
- <dashboard>
| |--------Dash_App1.py
| |--------<dash_app_code1>
| |--------<dash_app_code2>
|
- <configs>
|
----- run.py
run.py 有以下代码...
from app import create_app
app = create_app(config_mode)
if __name__ == "__main__":
app.run(debug = True)
目录“app”的“init.py”有以下代码...
def create_app(config, selenium=False):
app = Flask(__name__, static_folder='base/static')
app.config.from_object(config)
register_extensions(app)
register_blueprints(app)
app = Dash_App1.Add_Dash(app)
return app
所以我在“dashboard”目录的“Dash_App1.py”中实例化我的 Dash 应用程序,如下所示。
def Add_Dash(server):
d_app = Dash(server=server, url_base_pathname=url_base)
apply_layout_with_auth(d_app, layout)
@d_app.callback(Output('tabs-content', 'children'), Input('tabs', 'value'))
def render_content(tab):
if tab == 'tab-1':
output = general_layout()
return output
@d_app.callback(Output('date-text', 'children'), Input('btn-cboe-data', 'n_clicks'))
def readDaily(cobe_btn):
if cobe_btn:
do_something()
return d_app.server
这是我的问题......似乎这种设计迫使我在 Dash_App1.py 文件中的 Add_Dash 函数中拥有所有回调。我想根据不同文件中目录
EricLavault 上面的评论有我的答案。我使用了@dash.callback。这样,我就不需要应用程序上下文了。