วันพุธที่ 20 มกราคม พ.ศ. 2559

Django Tutorial Part 3

ใน Part 3 จะกล่าวถึงการสร้าง views

view คือ อะไร ?

   view คือ ชนิดของ web page ใน django application ที่มีการทำงานเฉพาะ และมีรูปแบบเฉพาะ ยกตัวอย่างเช่น Blog application จะมี views ดังนี้
- Homepage : ใช้แสดงบทความล่าสุดหลายๆบทความ
- Entry detail page : ใช้แสดงบทความเดียว
- Comment action : ใช้สำหรับ post comment ลงบทความ

สำหรับ Poll application ของเรานั้น จะมีอยู่ 4 views ด้วยกัน
Question index page : แสดงคำถามล่าสุด หลายๆคำถาม
Question detail page : แสดงข้อความของคำถาม มีแบบฟอร์มสำหรับโหวต แต่ไม่ได้แสดงผลลัพธ์
Question result page : แสดงผลลัพธ์ของการโหวต
Vote action : สำหรับควบคุมการโหวต

ใน django นั้น webpage หรือเนื้อหาต่างๆจะถูกส่งมาจาก views แต่ละ view ถูกแทนในรูป python function/method ซึ่ง django จะเลือกใช้งาน view จาก URL ที่ request มา

หลังจากอธิบายเบื้องต้น Tutorial จึงให้เราลองเขียน view อื่นๆเพิ่มขึ้นมา

โดยให้ไปเพิ่ม function ที่ polls/views.py

และเชื่อมต่อ view ที่สร้างขึ้นมาใหม่ กับ url ใน polls/urls.py

แล้วก็ทดสอบเข้าหน้าเว็บที่สร้างขึ้น
(อย่าลืมเปิด server ด้วย $ python3 manage.py runserver)



หลังจากนั้น Tutorial ก็อธิบายเราต่อ

แต่ละ view จะมีการตอบสนอง 1 ใน 2 อย่าง
- return HttpResponse object ที่มีข้อมูลเนื้อหาของหน้าเพจที่ request
- สร้าง exception เช่น Http404

จากนั้น tutorial จะให้เราทำ view ให้ทำอะไรได้มากขึ้น โดยให้ index() view สามารถแสดงผล 5 คำถามล่าสุด โดยแบ่งแต่ละคำถามด้วย comma

และเมื่อลอง runserver ดู ก็สามารถแสดงผลลัพธ์ได้





แต่จากที่เห็น หน้าเพจมีลักษณะเป็นข้อความธรรมดาๆ ถ้าต้องการจะเปลี่ยนรูปแบบหน้าเพจ ต้องแก้ไข python code ใน view
ดังนั้น ใช้ template ของ django น่าจะดีกว่า

สร้าง directory ชื่อ templates ใน polls ซึ่ง django จะหา template ในนี้
และสร้าง subdirectory ชื่อ polls ใน templates ด้วย

สร้างไฟล์ index.html ใน polls/templates/polls/index.html

และอัพเดทให้ view เรียกใช้ templates

เมื่อทดลองเปิดหน้าเว็บจากการ run server

สร้าง 404 Error เมื่อหาไม่มีคำถามนั้นอยู่ในฐานข้อมูล (หา id นอกช่วงของ id ที่มีอยู่)

และสร้าง template ขึ้นมาด้วย


ทดลองดูคำถามที่มี id เกินกว่าที่มีอยู่




ไม่มีความคิดเห็น:

แสดงความคิดเห็น