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

Helm模板中如何将字典作为参数传递?附可运行示例

Helm 模板传递字典作为参数的实现方案

Helm 原生支持字典类型作为模板参数传递,你原有的实现思路完全可行,代码无法运行是几处语法细节错误导致的。

原有代码问题

  • 变量声明语法错误:func模板中首次定义$D变量时需使用:=,=仅支持对已声明的变量重新赋值,原写法{{- $D = dict 'a' 1 'b' 2 'c' 3} -}}会触发变量未定义的渲染报错。
  • 空白裁剪符使用不规范:部分-的位置容易导致渲染结果出现多余空行、字符串拼接错位问题。

可运行实现示例

_helpers.tpl 定义(接收字典参数的display模板)

{{- define "display" }}
{{- $d := .d }}
{{- range $key, $value := $d }}
key: {{ $key }} Value: {{ $value }}
{{- end }}
{{- end }}

_test.tpl 定义(构造字典并调用模板的func逻辑)

{{- define "func" }}
{{- $D := dict "a" 1 "b" 2 "c" 3 }}
{{- include "display" (dict "d" $D) }}
{{- end }}

调用效果

在任意模板位置通过{{ include "func" . }}调用,即可得到和Python示例完全一致的输出:

key: a Value: 1
key: b Value: 2
key: c Value: 3

补充说明

  • 调用其他模板时,通过dict构造自定义上下文传参是Helm的标准用法,字典的值支持任意Helm模板支持的类型,包括嵌套字典、列表、数值、字符串等。
  • 如果需要在传参时保留原顶层上下文,可以将根对象一并传入参数字典,写法为(dict "d" $D "root" $),被调用模板中可通过.root访问全局上下文的所有值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 22:24:31