You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python Dash如何通过for循环批量渲染多个页面元素?

问题分析与解决方法

核心错误点

  • 循环内提前return终止执行:回调函数p里的for循环在第一次迭代时就执行了return,直接终止函数并返回第一个元素,后续循环根本不会运行,所以仅能渲染第一条记录。
  • 函数名不匹配:定义的生成元素函数是createRegister,但回调中调用的是createReg,会触发NameError,必须统一函数名。

修正后的代码

x = ['Tom', 'Jerry', 'Math']

def createRegister(name):
    return dbc.Col([
       html.P(f"{name}")
    ])

app.layout = dbc.Container([
    dcc.Interval(id='interval_db', interval=86400000 * 7, n_intervals=0),
    dbc.Row([

    ], id='row-teste')
], fluid=True)

@app.callback(
    Output('row-teste', 'children'),
    [Input('interval_db', 'n_intervals')]
)
def p(n_intervals):
    # 将所有生成的Col元素收集到列表中,最后统一返回
    cols = []
    for i in x:
        cols.append(createRegister(i))
    return cols
    # 也可以用列表推导式简化写法:
    # return [createRegister(i) for i in x]

说明

修改后,回调会返回包含所有dbc.Col组件的列表,Dash会自动将列表中的所有元素渲染到row-teste对应的Row组件内,这样就能展示所有记录了。

内容的提问来源于stack exchange,提问作者bona.coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 19:09:26