Building Software System II:
Django with Tutorial part 4
Django with Tutorial part 4
ใน Tuttorial นี้จะเน้นไปที่รูปแบบการประมวลผลแบบง่ายๆ และลดรูปของโค้ดให้สั้นลง
- ขั้นตอนการทำงาน (ต่อจาก Django app, part 3)
1. Update file detail.html ที่อยู่ใน polls/template/polls/ ให้มี โค้ดเป็นดังนี้
อธิบายโค้ด
- จาก Template ข้างต้น จะแสดงรูปบบของ page โดยการแสดงปุ่มสำหรับแต่ละ choice ของการสำรวจความเห็น ซึ่งค่าของแต่ละปุ่มจะเกี่ยวข้องกับ Choice’s
ID และชื่อของแต่ละปุ่มก็คือของ choice
- set รูปแบบของ action {% url ‘polls:vote’ poll.id %} และ set method = “post” โดย method นี้จะส่งรูปแบบของ action นี้ไปยังข้อมูลด้าน server
- ใช้ forloop.counter เพื่อแสดงถึงจำนวนครั้งที่วน for ด้านหลังตัวแปรที่เปลี่ยนค่าตามตามเงื่อนไข ในที่นี้คือ ตัวแปร choice
- set รูปแบบของ action {% url ‘polls:vote’ poll.id %} และ set method = “post” โดย method นี้จะส่งรูปแบบของ action นี้ไปยังข้อมูลด้าน server
- ใช้ forloop.counter เพื่อแสดงถึงจำนวนครั้งที่วน for ด้านหลังตัวแปรที่เปลี่ยนค่าตามตามเงื่อนไข ในที่นี้คือ ตัวแปร choice
2. เพิ่มตัวอย่างการจำลอง function vote() ใน file polls/
views.py
อธิบายโค้ด
- จาก function vote() ข้างต้น จะทำงาน คู่กับ url(r’^(?P<poll_id>\d+)/vote/$’ ,
views.vote, name = ‘vote’) โดย url นี้จะเรียกใช้ ฟังก์ชัน vote ใน file
views.py และฟังก์ชัน vote() รับค่า request
มาในฟังก์ชัน โดย
parameter request นี้จะเป็นค่า
choice.ID จากนั้นฟังก์ชันจะเพิ่มค่าทีละ 1
ทุกครั้งที่มีการเลือก choice แล้วกด vote
และบันทึกค่าไว้ เสร็จแล้วจะ return ค่าไปยัง url(r’^(?P<poll_id>\d+)/results/$’
, views.results, name = ‘results’) สุดท้าย url นี้จะเรียกใช้ function results() เพื่อดำเนินการขั้นต่อไป
- ในฟังก์ชัน results() จะรับค่า poll id และ return ค่าออกไปแสดงผลบน
page
4. เข้าไปแก้ไขไฟล์ view ในส่วนของฟังก์ชั้น result ให้เป็นดังนี้
- แก้ไขโดยการ return ค่าไปยัง template results ที่สร้างขึ้น โดยการ
สร้าง object poll ขึ้นมาและส่งค่าไปยัง template ดังกล่าว
5. สร้าง file result.html เป็น template
เก็บไว้ใน polls/template/polls/ และ ใส่โค้ดไปดังนี้
<h1>{{ poll.question }}</h1>
<ul>
{% for choice in poll.choice_set.all %}
<li>{{ choice.choice_text }} -- {{ choice.votes }} vote{{ choice.votes|pluralize }}</li>
{% endfor %}
</ul>
<a href="{% url 'polls:detail' poll.id %}">Vote again?</a>
- ส่วนของ code ของ template นี้ ให้สำหรับการแสดงผลจำนวนการ vote ว่าแต่ละ choice
มีการ vote เท่าไหร่ และ มี link สำหรับกลับไปหน้าที่ต้องการ
vote อีกครั้ง
7. เข้าไปแก้ไขไฟล์ urls.py เพื่อเปลี่ยนรูปแบบของโค้ด
- แก้ไขโดยการเปลี่ยนจากฟังก์ชันข้างต้นเป็น
Class โดยที่รูปแบบการแสดงผลยังคงเหมือนเดิม และ
โครงสร้างของโค้ดสั้นลง
class
IndexView() ทำหน้าที่เช่นเดียวกับ function index() โดยการเรียกใช้ generic.ListView หรือ display
a list of object ซึ่งเป็นการแสดงรายการของ
object โดยในฟังก์ชันนี้มีการเรียกใช้
template โดยใช้ template_name โดยการบอก
ListView ส่วนใน class อื่นๆ
มีการเรียกใช้ DetailView หรือ display detail Django model โดยการใช้ model = poll และเรียกใช้ template เช่นเดียวกับ class IndexView
- และเมื่อเลือก choice แล้วกด vote url จะเปลี่ยนค่าและการแสดง page จะเปลี่ยนไป ดังนี้
นางสาวศิริวิมล สุนทร
54-010126-3024-0
sec.3
54-010126-3024-0
sec.3











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