เริ่มต้นการเขียน Django app, Part 3
เริ่มต้นการเขียน views
เปิดไฟล์ views.py จาก directory polls ขึ้นมาเพื่อ แก้ไขโค้ดเป็นดังนี้
อธิบายโค้ด
จากโค้ดข้างต้นเป็น method ที่ส่งค่าไปแสดงผลบน page ใน browser
อธิบายโค้ด
จากโค้ดข้างต้นเป็นการรับค่าจาก url มาจากนั้นจะเรียกฟังก์ชัน index ที่สร้างขึ้นในไฟล์ views ให้ทำงาน
อธิบายโค้ด
ไฟล์ urls.py ของไดเร็คทอรี่นี้จะเป็นการ point ไปยัง root ของ polls.urls อีกที
เปิด directory ที่สร้างโปรเจ็คนี้ไว้ โดย Terminal ด้วยคำสั่ง
$ cd directory_django(ไดเร็คทอรี่โปรเจ็คที่สร้างไว้)
ทำการ run server
$ python manage.py runserver
เมื่อลองใส่ url http://127.0.0.1:8000/polls/ที่ browser แล้วจะได้
การเขียน views
เพิ่มฟังก์ชันไปในไฟล์ poll/views.py ดังนี้
อธิบายโค้ด
จากโค้ดข้างต้นจะเห็นได้ว่า มีการเพิ่มฟังก์ชัน detail,result,และ vote ลงไป โดยแต่ละฟังก์ชันมีการใส่ argument เพิ่มไปด้วย
ต่อมาให้แก้ไขไฟล์ poll/urls.py ดังนี้
อธิบายโค้ด
จากโค้ดจะเห็นได้ว่า เมื่อมีการรับค่าจาก url บน browser ในรูปแบบที่ตรงกัน ก็จะไปเรียกใช้ฟังก์ชันนั้นจาก views เช่น เมื่อ url เป็น http://127.0.0.0:8000/polls/34
ก็จะมีการเรียกใช้ฟังก์ชัน results ทำให้การแสดงผลบน page เป็นดังนี้
หรือเมื่อ url เป็น http://127.0.0.0:8000/polls/34/results/ จะได้
และเมื่อ url เป็น http://127.0.0.0:8000/polls/34/vote/ จะได้
การเขียน views ตามวัตถุประสงค์
ให้ทำการแก้ไข polls/vews.py โดยเปลี่ยนรูปแบบของฟังก์ชัน index เป็นดังนี้
อธิบายโค้ด
จากฟังก์ชัน index ที่ได้แก้ไขใหม่นั้น เป็นการเพิ่ม object ของ Poll ที่สร้างขึ้นจาก model ทำให้รูปแบบการแสดงผลเป็นดังนี้
ต่อมาให้ทดลองใช้ template โดยสร้าง directory templates ไว้ใน directory polls และภายในนี้ ก็สร้าง directory polls อีกครั้ง จากนั้น จึงสร้างไฟล์ index.html ไว้ในไฟล์นี้ จึงได้เป็น polls/template/polls/index.html เพราะว่า template นี้เป็นของ polls ไม่ใช่ของ admin ดังที่เคยสร้างใน tutorial ก่อนหน้า จึงต้องจัดเก็บไฟล์ใช้ชัดเจน
จากนั้นให้เปิดไฟล์ index.html ที่สร้างขึ้น แล้วเพิ่มโค้ดลงไปดังนี้
เสร็จแล้วให้กลับไปแก้ไขไฟล์ views.py อีกครั้ง โดยเพิ่มส่วนของ context ไปดังรูป
หลังจากแก้ไขไฟล์ต่างๆแล้วผลที่ได้ทำให้การแสดงผลมีลักษณะเช่นนี้
ที่มาและแหล่งค้นคว้าเพิ่มเติม: Django Documect Tutorial 3



















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