0Pricing
Ansible Academy · บทเรียน

ลูปและบล็อก if ในเทมเพลต

สร้างส่วนการกำหนดค่าที่ซ้ำกัน

ลูปและบล็อก if ในเทมเพลต เป็นบทเรียน Ansible Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Ansible Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Ansible Academy มีบทเรียนทั้งหมด 4 บทเรียน

ตรรกะอยู่ใน {% %}

นอกจากการพิมพ์ค่าแล้ว Jinja2 ยังเรียกใช้ตรรกะควบคุมภายในแท็ก {% %} ได้ นี่คือวิธีที่เทมเพลตหนึ่งรายการสร้างได้หลายบรรทัด 🔁

ลูป for พื้นฐาน

ใช้ลูป for เพื่อวนซ้ำบรรทัดต่าง ๆ ใน list แต่ละรายการจะสร้างบล็อกข้อความที่แสดงผลเพิ่มเติมหนึ่งบล็อก

{% 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 %}

เงื่อนไขภายในลูป

ซ้อน if ไว้ภายใน for เพื่อแสดงเฉพาะรายการที่ตรงกัน เช่น ข้ามเซิร์ฟเวอร์ที่ปิดใช้งานในกลุ่มเซิร์ฟเวอร์

{% for h in hosts %}
{% if h.enabled %}
server {{ h.ip }};
{% endif %}
{% endfor %}

ควบคุมช่องว่าง

ลูปอาจทิ้งบรรทัดว่างไว้ได้ เครื่องหมายขีดอย่าง {%- -%} จะตัดช่องว่างรอบข้างเพื่อให้ผลลัพธ์เป็นระเบียบ

{%- for h in hosts -%}
{{ h }}
{%- endfor -%}

else ของลูป for

for สามารถมี else ซึ่งจะทำงานเฉพาะเมื่อ list ว่าง เหมาะอย่างยิ่งสำหรับบรรทัดทางเลือกสำรองที่เหมาะสม

{% for h in backends %}
server {{ h }};
{% else %}
# no backends defined
{% endfor %}

แท็กแสดงผลกับแท็กตรรกะ

แยกให้ออก: {{ }} แสดงค่า ส่วน {% %} ควบคุมลำดับการทำงานแต่ไม่พิมพ์อะไรออกมาเอง

ตรวจสอบอย่างรวดเร็ว

คุณต้องการทำซ้ำบรรทัดการกำหนดค่าสำหรับทุกโฮสต์ใน list แท็กใดใช้เริ่มลูปนั้น

สรุปทบทวน

ตอนนี้คุณสามารถวนซ้ำด้วย for แยกแขนงด้วย if อ่าน loop.index ซ้อนบล็อก และตัดช่องว่างได้แล้ว เทมเพลตเดียวสามารถเขียนการกำหนดค่าแบบพลวัตได้ ✨

คำถามที่พบบ่อย

บทเรียน “ลูปและบล็อก if ในเทมเพลต” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ลูปและบล็อก if ในเทมเพลต” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Ansible Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Ansible Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ลูปและบล็อก if ในเทมเพลต”

สร้างส่วนการกำหนดค่าที่ซ้ำกัน คุณปฏิบัติ Ansible Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Ansible Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Ansible Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “ลูปและบล็อก if ในเทมเพลต” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Ansible Academy นี้ได้ไหม

ได้ บทเรียน Ansible Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. โมดูล template และไฟล์ .j2
  2. ตัวแปรและนิพจน์ใน Jinja2
  3. ลูปและบล็อก if ในเทมเพลต
  4. ฟิลเตอร์: default, join และ upper
← กลับไปที่ Ansible Academy