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

Plotly Dash DataTable实现可点击超链接及多链接适配问题

问题原因
  • 语法错误/索引器过多错误:你错误将列配置字典传入了pandas.loc的参数位,loc仅支持行、列两个维度的索引参数,传入第三个参数属于非法调用,同时最初的列表推导式括号配对错误也会触发语法异常。
  • 链接无法点击问题:你生成的链接列仅保存了原始URL字符串,没有按Dash要求转换为Markdown超链接格式,且未给对应列开启markdown渲染配置。
完整解决方案

步骤1:生成Markdown格式的链接列

需要将链接转换为标准Markdown超链接格式,同时自动适配单个/多个链接的场景:

woLink = r'http://corp.com/uniqueid='
# 正则匹配每个工单号,批量转为Markdown超链接,多个工单自动保留逗号分隔
df['WO Link'] = df['Work Order'].str.replace(r'(\d+)', rf'[\1]({woLink}\1)', regex=True)

crLink = r'http://corp.com/uniqueid='
# 工单ID列转为Markdown超链接
df['Ticket Link'] = df['Ticket ID'].apply(lambda x: f'[{x}]({crLink}{x})')

步骤2:修正列配置生成逻辑

先定义需要显示的列列表,再单独给链接列添加markdown渲染配置,不要和pandas索引操作混写:

# 先定义所有要展示的列
display_cols = [
    'Reported Date', 'Site','Ticket ID', 'Ticket Link', 'Work Order',
    'WO Link', 'Score', 'Level', 'First', 'Last', 'Department',
    'Detection', 'Code', 'Content', 'Description', 'Owner', 'Owner Group', 'Document ID'
]

# 生成列配置
columns = []
for col in display_cols:
    if col in ['WO Link', 'Ticket Link']:
        # 链接列开启markdown渲染
        columns.append({
            "name": col,
            "id": col,
            "type": "text",
            "presentation": "markdown"
        })
    else:
        # 普通列默认配置
        columns.append({"name": col, "id": col})

步骤3:DataTable组件配置(可选优化)

如果需要点击链接后打开新标签页,可添加markdown_options参数:

import dash_table

app.layout = dash_table.DataTable(
    data=df.to_dict('records'),
    columns=columns,
    # 可选:点击链接新开标签页
    markdown_options={"link_target": "_blank"}
)

内容的提问来源于stack exchange,提问作者Sam Dean

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 10:36:01