Cisco DNAC模板编辑器配置Jinja模板无法拆分HOSTNAME变量问题
问题根因与解决方案
核心错误点
- 在Jinja控制块(
{% %})中引用变量时错误添加了{{ }}与引号,导致你实际拆分的是{{ HOSTNAME }}这个字符串字面量,而非HOSTNAME变量的实际值,所以拆分结果只有一个元素,就是完整的主机名字符串。 - Cisco DNAC模板编辑器使用的是裁剪后的Jinja2运行环境,不支持序列拆包赋值语法,因此多变量同时赋值的split写法会触发语法错误,只能通过索引取值。
正确实现代码
{# 控制块内直接引用变量名,不需要加{{ }}或引号 #} {% set hname = HOSTNAME %} Device name is {{ hname }} {% set list1 = hname.split('-') %} {% for item in list1 %} <p>{{ item }}</p> {% endfor %} The campus is {{ list1[0] }} The building is {{ list1[1] }} Room number is {{ list1[2] }} Switch type is {{ list1[3] }} IP address is {{ list1[4] }}.{{ list1[5] }}.{{ list1[6] }}.{{ list1[7] }}
额外注意事项
如果拆分后仍然无法正常取值,可先添加调试行HOSTNAME变量原始值:{{ HOSTNAME }},变量类型:{{ HOSTNAME.__class__.__name__ }}确认传入的HOSTNAME确实是字符串类型,部分场景下DNAC传入的变量可能是对象类型,需要先调用toString()方法转为字符串再拆分:{% set hname = HOSTNAME.toString() %}
内容的提问来源于stack exchange,提问作者CjD
相关产品推荐
相关产品推荐

