使用flask时如何在不同目录中回调Plotly Dash

问题描述 投票:0回答:1

我已经完成了 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 函数中拥有所有回调。我想根据不同文件中目录 中的功能来组织回调。但我不知道该怎么做。我尝试使用“from Flask import current_app”并尝试在那里添加回调,但它不起作用。我尝试将破折号实例(d_app)分配给全局变量“g”,并尝试在 中导入(和使用)它,但它抛出了上下文错误。如何在不同目录()的文件中添加更多与破折号相关的回调,并避免将所有回调都放在 Add_Dash 函数中?

python flask plotly plotly-dash
1个回答
0
投票

EricLavault 上面的评论有我的答案。我使用了@dash.callback。这样,我就不需要应用程序上下文了。

© www.soinside.com 2019 - 2024. All rights reserved.