代码之家  ›  专栏  ›  技术社区  ›  kms

如何修复Dash应用程序异常-无效的输出值数应为2,得到1?

  •  1
  • kms  · 技术社区  · 5 年前

    我使用 plotly dash app 框架和具有多个输出值的回调函数。

    当我尝试部署应用程序时,它会抛出一个破折号异常。 Invalid number of output values... 我试着用 [] 并移除它们。然而,我仍然注意到了这个例外。

    以下是应用程序布局:

    
    app.layout = html.Div([
    
        # header
        html.Div([ 
    
                  dcc.Link(
                     href=app.get_relative_path('/home'),
                     children='Home'
                  ),
    
                  dcc.Link(
                     href=app.get_relative_path('/history'),
                     children='History'
                  ),
    
                  # For pdf downloads
                  dash_extensions.Download(id="download"),
                  dcc.Location(id="url"),
    
                  # Page content
                  html.Div(id="page-content"),
    
                  # Tab content
                  html.Div(id="tab_content"),
    
          ])
    
    

    回拨

    
    # Update page content 
    
    @app.callback([
                   Output('page-content', 'children'),
                   Output('download', 'data')
                  ],
                  [Input('url', 'pagename')]
                 )
    def display_content(page_name):
    
        # Pages and Links
    
        if not page_name:
            return [dash.no_update, dash.no_update]
    
        if page_name == 'history:
            return [history.layout(), dash.no_update]
    
        else:
            return ['404 Error', dash.no_update]
    
    

    从日志中回溯:

    
    Traceback (most recent call last):
    File "/app/.heroku/python/lib/python3.6/site-packages/flask/app.py", line 1950, in full_dispatch_request
    ....
    _validate.validate_multi_return(output_spec, output_value, callback_id)
    File "/app/.heroku/python/lib/python3.6/site-packages/dash/_validate.py", line 126, in validate_multi_return
    callback_id, len(outputs_list), len(output_value)
    172.17.0.19 - - [03/Sep/2020:06:03:32 +0000] "POST /dash-app/_dash-update-component HTTP/1.1" 500 69 "https://example.com/dash-app" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
    
    dash.exceptions.InvalidCallbackReturnValue: Invalid number of output values for ..page-content.children...download.data...
    
    Expected the output type to be a list or tuple, but got 1
    
    
    1 回复  |  直到 5 年前
        1
  •  2
  •   Lukas    5 年前

    方法 display_content 期望您返回两个值。而是返回一个值,一个列表。

    所以,写下:

    return history.layout(), dash.no_update
    

    return '404 Error', dash.no_update
    
    推荐文章
    pilu  ·  Plotly Dash API文档
    8 年前