Dash多Tab切换布局触发InvalidCallbackReturnValue错误咨询
报错原因
你触发的dash.exceptions.InvalidCallbackReturnValue错误,是因为从三个外部文件导入的friends_layout、user_layout、userfriends_layout三个变量不是Dash可识别的布局组件(如html.Div/dbc.Card/dcc.Graph等的组合),而是Dash类的实例对象,这类实例无法被JSON序列化后赋值给content的children属性完成渲染。
修复方案
- 打开
DashFriends.py、DashUser.py、FriendsUserApp.py三个文件,删除每个文件中app = dash.Dash(...)的实例定义代码、以及app.layout = xxx的赋值代码,仅保留xxx_layout变量的定义——该变量直接赋值为布局组件的组合即可。
举个修改前后的示例:
修改前的子布局文件(错误写法)
修改后的子布局文件(正确写法)import dash import dash_core_components as dcc import dash_html_components as html # 这行是多余的,会导致导入的变量为Dash实例 app = dash.Dash(__name__) friends_layout = html.Div([ dcc.Graph(id="friend-analysis"), html.P("这是朋友分析页") ]) # 这行也是多余的 app.layout = friends_layout if __name__ == '__main__': app.run_server()import dash_core_components as dcc import dash_html_components as html friends_layout = html.Div([ dcc.Graph(id="friend-analysis"), html.P("这是朋友分析页") ]) - 如果子布局文件中包含对应页面的回调函数,直接保留回调函数代码即可,主文件已开启
suppress_callback_exceptions=True,可正常注册子页面的回调。 - 三个子布局文件全部修改完成后,重新运行主程序即可正常点击Tab切换布局。
内容的提问来源于stack exchange,提问作者Claire19
相关产品推荐
相关产品推荐

