ในครั้งที่แล้วแสดงผล Blog ทั้งหมดแล้ว (แสดงแบบ List view) สำหรับ medium นี้เราจะแสดงผลแบบ Detail view ซึ่งก็คือการแสดงผลแค่ทีละ Blog


คงจะจำกันได้นะครับว่าการที่เราจะเข้าถึง Object แต่ละตัวใน Model เราจะเข้าถึงด้วยการอ้างถึง Primary Key ของ Object นั้นๆ

สิ่งที่เราจะสร้างก็จะมี

  1. url ที่สามารถส่ง pk เข้าไปได้ (www.mysite.com/blog/<int:pk>)
  2. view ที่จะไปดึงข้อมูลที่มี pk ตามที่ถูกป้อน
  3. หน้า Template

สำหรับ url ของ detail view ผมใส่ regular expression สำหรับดักตัวเลขไว้ เมื่อมีการรีเควสต์หน้านั้นๆ django จะดักตัวเลขแล้วไปเก็บเป็น kwargs ใน key ที่ชื่อ pk

สำหรับหน้า view ฟังค์ชันของเราจะ fancy ขึ้นมานิดนึงตรงที่จะต้องมีการรับ **kwargs เข้ามาด้วยซึ่ง kwargs นี้ก็คือค่าที่เราส่งมาจาก url เราดึงค่า pk มาจาก kwargs จากนั้นก็ .objects.get() ที่มี pk นั้นๆแล้วก็ยัดเข้า render() ตามปกติ

สำหรับการใช้ .get() โดยตรงนั้นถ้าใน database ไม่มีข้อมูลที่ตรงกับค่า pk อาจจะเกิดการ error ขึ้นได้ เพื่อกันไม่ให้เกิดการ error เราสามารถใช้ django.shortcuts.get_object_or_404() แทนได้

สำหรับหน้า Template ก็เอาข้อมูลจาก context มาแสดงธรรมดาๆครับ

ลองรันเว็บไซต์ดูแล้วเข้าถึง detail view ผ่าน /blog/<pk>

/blog/1

จะเห็นว่าใช้งานได้ดีครับ สำหรับพาร์ทหน้าเราจะมาตกแต่งให้หน้าตาดูดีขึ้นกว่านี้กัน


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