render_template และโฟลเดอร์ templates
ส่งคืนไฟล์ HTML แทนสตริง
render_template และโฟลเดอร์ templates เป็นบทเรียน Flask Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Flask Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Flask Academy มีบทเรียนทั้งหมด 4 บทเรียน
จากสตริงสู่หน้าเว็บ
จนถึงตอนนี้เส้นทางของคุณส่งคืนสตริงธรรมดา แต่หน้าเว็บจริงต้องใช้ HTML และ Flask มี render_template สำหรับให้บริการไฟล์ HTML แบบเต็มอย่างเป็นระเบียบ
render_template ทำอะไร
render_template ค้นหาไฟล์ HTML ประมวลผลผ่านเครื่องมือสร้างแม่แบบ และส่งคืนหน้าเว็บที่สร้างเสร็จแล้วเป็นเนื้อหาของคำตอบ
from flask import render_template
@app.route('/')
def home():
return render_template('index.html')โฟลเดอร์แม่แบบ
Flask จะค้นหา HTML ในโฟลเดอร์ชื่อ templates ซึ่งอยู่ถัดจากไฟล์แอปของคุณ วาง index.html ไว้ที่นั่น แล้ว Flask จะค้นหาให้โดยอัตโนมัติ 📁
myapp/
app.py
templates/
index.htmlเหตุผลที่ใช้ชื่อคงที่
ชื่อ templates เป็นแบบแผน ไม่ใช่การคาดเดา Flask รู้ว่าต้องค้นหาที่ใด คุณจึงไม่ต้องเขียนเส้นทางโฟลเดอร์ไว้ใน render_template
อ้างอิงเฉพาะชื่อไฟล์
คุณส่งเฉพาะชื่อไฟล์ ไม่ใช่เส้นทางแบบเต็ม Flask จะนำชื่อดังกล่าวไปต่อกับโฟลเดอร์ templates ให้ ทำให้โค้ดสั้นและย้ายไปใช้ที่อื่นได้ง่าย
return render_template('about.html')โฟลเดอร์ย่อยภายใน templates
คุณสามารถจัดกลุ่มหน้าเว็บไว้ในโฟลเดอร์ย่อยและอ้างอิงด้วยเครื่องหมายทับ วิธีนี้ช่วยให้โครงการขนาดใหญ่เป็นระเบียบเมื่อเติบโตขึ้น
return render_template('users/profile.html')แม่แบบแบบง่ายที่สุด
โดยพื้นฐานแล้วแม่แบบก็คือ HTML ทั่วไป แม่แบบที่ง่ายที่สุดเป็นเพียงหน้าเว็บปกติที่ยังไม่มีไวยากรณ์พิเศษ
<!doctype html>
<title>Home</title>
<h1>Welcome</h1>แม่แบบจะถูกเรนเดอร์
แม้แต่ไฟล์ธรรมดาก็ยังถูกเรนเดอร์ โดย Flask จะประมวลผลผ่าน Jinja2 ก่อน ขั้นตอนนี้ทำให้คุณเพิ่มส่วนประกอบแบบไดนามิกได้ในภายหลัง
ส่งคืนผลลัพธ์
render_template ส่งคืน สตริง HTML ซึ่งคุณส่งคืนจากวิวของคุณ Flask จะห่อหุ้มสตริงนี้เป็นคำตอบที่ถูกต้องพร้อมชนิดเนื้อหาที่เหมาะสม
@app.route('/')
def home():
return render_template('index.html')ข้อผิดพลาด TemplateNotFound
หาก Flask หาไฟล์ไม่พบ คุณจะได้รับข้อผิดพลาด TemplateNotFound ให้ตรวจสอบการสะกดและตรวจดูว่าไฟล์อยู่ภายใน templates จริง
แยกตรรกะออกจากมาร์กอัป
แม่แบบช่วยแยก HTML ออกจาก Python วิวจัดการตรรกะ ส่วนแม่แบบจัดการการนำเสนอ การแยกนี้ทำให้ทั้งสองส่วนอ่านได้ง่ายขึ้นมาก
ตรวจสอบอย่างรวดเร็ว
โดยค่าเริ่มต้น Flask คาดหวังให้ไฟล์ HTML อยู่ที่ใด
ทบทวน
คุณเรียนรู้ว่า render_template ให้บริการ HTML จากโฟลเดอร์ templates โดยใช้ชื่อไฟล์ ทำให้ตรรกะอยู่ใน Python และมาร์กอัปอยู่ในไฟล์ ทำได้ดีมาก! 🎉
คำถามที่พบบ่อย
บทเรียน “render_template และโฟลเดอร์ templates” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “render_template และโฟลเดอร์ templates” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Flask Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Flask Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “render_template และโฟลเดอร์ templates”
ส่งคืนไฟล์ HTML แทนสตริง คุณปฏิบัติ Flask Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Flask Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Flask Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “render_template และโฟลเดอร์ templates” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Flask Academy นี้ได้ไหม
ได้ บทเรียน Flask Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- render_template และโฟลเดอร์ templates
- ส่งข้อมูลเข้าเทมเพลต
- ลูปและเงื่อนไขของ Jinja2
- การหลีกอักขระอัตโนมัติและตัวกรอง safe