บทความนี้ต่อมาจากบทความที่แล้วนะครับ สามารถไปอ่านได้ที่ สร้างเว็บด้วย Django ตอนที่ 1

ในครั้งที่แล้วผมเขียนเกี่ยวกับการ startproject แล้วก็การทำโฮมเพจง่ายๆไปครับ สำหรับวันนี้เลยจะมาขอเพิ่มเติมอีกนิดหน่อยเพื่อให้หน้าโฮมเพจสมบูรณ์มากยิ่งขึ้น ด้วย Templates ครับ


ภาพจาก Django Community | Django

เริ่มกันที่อะไรคือ Templates ยังจำได้มั้ยครับในครั้งที่แล้วที่เราทำฟังค์ชัน views ง่ายๆของเราโดย Response ออกมาเป็น HTML ง่ายๆ

ข้อเสียของมันหลักๆเลยคือถ้าโค้ด HTML ของเรายาวมากๆ การจะมาเขียน HTML ใน Python โดยตรงเลยคงจะเป็นอะไรที่ลำบากพอสมควร

Templates จะทำให้เรานำโค้ด HTML ข้างนอกใส่เข้าไปเป็น Response ได้

แล้วเราจะทำยังไงล่ะ? เนื่องจากว่าการจะนำ Template มาใช้นั้นจำเป็นต้องมีการตั้งค่าใน Django นิดหน่อยครับ

  1. ให้ไปที่ไฟล์ settings.py ในโฟลเดอร์ project
  2. เลื่อนหา List ที่ชื่อว่า TEMPLATES
  3. ในลิตส์นั้นจะมี dictionary ให้หา key ที่ชื่อ DIRS แล้วเติมไดเรคทอรีของโฟลเดอร์ที่เราต้องการใส่ไฟล์ HTML ของ templates ไป
ไฟล์ settings.py ใน project/project และโฟลเดอร์ templates ใน project

ผมต้องการเก็บไฟล์ HTML ไว้ในโฟลเดอร์ templates ครับ และเนื่องจากว่าโปรเจคของผมตั้งอยู่ที่ E:\project ดังนั้นใน DIRS ผมจะใส่สตริงที่บอกไดเรคทอรีของผมเป็น e:\\project\\templates

เท่านี้ก็เป็นอันเสร็จการตั้งค่าครับ ทีนี้เราจะได้ใช้งานมันซักที ผมจะสร้างไฟล์ HTML อันนึงไว้ในโฟลเดอร์ templates ชื่อว่า home.html

จากนั้นก็ไปสร้าง view อันใหม่ที่จะชี้มาที่ template นี้จาก medium ที่แล้วที่ผมแนบไว้ตอนท้ายครับว่าเราไม่นิยมเขียน view ใน urls.py กัน ผมเลยสร้างไฟล์ใหม่ในโฟลเดอร์ project/project ชื่อว่า views.py ไว้สำหรับเก็บ view

ไฟล์ views.py ใน project/project

ไฟล์ views.py ของเราจะมีฟังค์ชัน view ตัวนึงชื่อ helloWorld ซึ่งมันจะคืนค่าเป็น render(request, “home.html”)

ซึ่งตัว render นี้จะต้องรับ argument 2 ค่า 1 คือค่าที่ฟังค์ชัน view รับมา 2 คือชื่อของ template ที่เราจะ render (อ่านเพิ่มเติมที่ นี่)

ทีนี้ก็มาแก้ที่ urls.py ให้มันชี้ไปที่ view ที่เราพึ่งสร้างครับ

ผมลบฟังค์ชันที่เราประกาศในตอนที่แล้วออก จากนั้นก็ส่งฟังค์ชันที่เรา import มาจาก .views (ตัวที่เราสร้างไว้) เข้าไปแทน

ทีนี้มาลองดูผลลัพธ์ที่ได้กันครับ

ผลลัพท์ที่ได้

** อีกอย่างนึงที่ผมไม่ได้บอกไว้คือวิธีการตั้งค่าใน settings.py ให้ดีขึ้นครับ เนื่องจากว่าถ้าเราส่ง directory เต็มๆของเราไปเลย หากเราต้องการย้าย directory ของมันทีหลังเราก็จำเป็นต้องมาแก้ใน settings.py ใหม่ ดังนั้นวิธีที่ดีกว่าคือการหา Root Path แล้วค่อยเอามา join กับโฟลเดอร์ที่เราต้องการเก็บในนั้นครับ

ถ้าฟังดูยากไปหน่อยก็แค่ก็อปอันนี้ไปแปะแทนเลยครับ

os.path.join(BASE_DIR, 'โฟลเดอร์ที่ต้องการเก็บ')


Medium ที่ 15
ปีนี้ผมตั้งใจว่าจะเขียน Medium ให้ได้เดือนละ 4–5 Medium ครับ สิ้นปีก็จะมี 52 Medium เท่ากับจำนวนสัปดาห์ใน 1 ปีพอดี ไม่รู้จะทำได้มั้ย แต่ก็ถือเป็น Passion เล็กๆน้อยๆของผมครับ 5555
ผมเขียนบทความหลายแนวแล้วแต่ว่าอยากเขียนยังไง ถ้าอยากให้กำลังใจช่วยกด Clap ให้ซักที สองทีด้วยนะครับ :D
เจอกันบทความหน้าครับ