ลูปและบล็อก 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- โมดูล template และไฟล์ .j2
- ตัวแปรและนิพจน์ใน Jinja2
- ลูปและบล็อก if ในเทมเพลต
- ฟิลเตอร์: default, join และ upper