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

如何在Saltstack的Jinja2模板sls文件中插入Python元组列表

解决方案

正确写法

1. 硬编码场景

直接使用YAML的Python元组类型标签即可,注意类型标签后不需要加冒号:

amount_choices:
  - !!python/tuple [1, '1€']
  - !!python/tuple [5, '5€']

2. 动态生成场景

如果需要用Jinja2逻辑动态构造元组列表,先定义变量再通过to_yaml过滤器输出,保证类型正确:

{% set amount_choices = [(1, '1€'), (5, '5€')] %}
# 可在这中间加Jinja2逻辑动态修改amount_choices
amount_choices: {{ amount_choices | to_yaml }}

之前写法的错误原因

  • 第一种写法amount_choices: [(1, '1€'), (5, '5€')]:YAML默认会将括号内结构解析为嵌套列表,不会自动识别为元组,Django读取到的结构不符合choices字段要求。
  • 第二种写法的问题是!!python/tuple后多了冒号,导致YAML将类型标签识别为字典键,整体结构解析错误。
  • 第三种写法仅定义了Jinja2变量,没有将变量值赋值给amount_choices字段,因此最终读取到的值为空。

验证方法

可以在Salt节点本地执行以下命令渲染SLS文件,确认输出结构是否符合预期:
salt-call sls.render_template path/to/your/init.sls

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:06:03