模板中的循环与 if 块
生成重复的配置部分
模板中的循环与 if 块 是 CoddyKit 上的免费 DevOps Bootcamp 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 DevOps Bootcamp 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 DevOps Bootcamp 课程共包含 4 节课。
逻辑位于 {% %} 中
除了输出值之外,Jinja2 还会在 {% %} 标签中运行控制逻辑。这就是一个模板能够生成多行内容的方式。🔁
基本的 for 循环
使用 for 循环遍历列表并重复生成多行内容。每个列表项都会生成另一段渲染后的文本。
{% for host in backends %}
server {{ host }};
{% endfor %}始终关闭代码块
每个开始标签都需要对应的结束标签:endfor 用于结束循环,就像 endif 用于结束条件一样。忘记关闭会导致渲染失败。
遍历字典
使用 .items() 遍历字典中的键值对,捕获每个键和值,以生成结构化配置。
{% for key, val in settings.items() %}
{{ key }} = {{ val }}
{% endfor %}loop 变量
在循环内部,Jinja2 会提供 loop.index 表示当前计数,并提供 loop.first 或 loop.last 这类实用的布尔值。
{% for s in servers %}
server{{ loop.index }} {{ s }};
{% endfor %}简单的 if 代码块
if 代码块仅在条件为真时渲染其内容,因此可选配置只会在应当出现时出现。
{% if enable_ssl %}
ssl on;
{% endif %}if、elif 和 else
使用 elif 和最后的 else 串联多个选择。和 Python 一样,只有一个分支会被渲染。
{% if env == 'prod' %}
level = warn
{% else %}
level = debug
{% endif %}循环中的条件
可以在 for 中嵌套 if,仅渲染符合条件的项目,例如跳过服务器池中已禁用的服务器。
{% for h in hosts %}
{% if h.enabled %}
server {{ h.ip }};
{% endif %}
{% endfor %}空白控制
循环可能会留下空行。使用类似 {%- -%} 的短横线可以裁剪周围的空白,使输出整洁。
{%- for h in hosts -%}
{{ h }}
{%- endfor -%}for 循环的 else
for 可以包含一个 else,仅在列表为空时运行,非常适合生成合理的备用行。
{% for h in backends %}
server {{ h }};
{% else %}
# no backends defined
{% endfor %}输出标签与逻辑标签
请区分它们:{{ }} 输出一个值,而 {% %} 控制流程,但本身不会输出任何内容。
快速检查
您希望为列表中的每台主机重复生成一行配置。哪个标签会开始这个循环?
回顾
现在您可以使用 for 循环、使用 if 分支、读取 loop.index、嵌套它们并裁剪空白。一个模板现在就能生成动态配置。✨
常见问题解答
「模板中的循环与 if 块」课时是免费的吗?
是的 — 「模板中的循环与 if 块」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 DevOps Bootcamp 课程的其余内容,请升级到 CoddyKit PRO。 DevOps Bootcamp 课程共包含 4 节课。
「模板中的循环与 if 块」这节课中我会学到什么?
生成重复的配置部分 你通过在浏览器中直接运行的动手代码来练习 DevOps Bootcamp,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 DevOps Bootcamp 需要有经验吗?
无需任何先前经验。CoddyKit 上的 DevOps Bootcamp 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。
「模板中的循环与 if 块」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 DevOps Bootcamp 课中编写并运行代码吗?
能。每节 DevOps Bootcamp 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。