จึงแยก (Week 2-2) Django Tutorial(1-4) ออกเป็น 4 part
(LINK : https://b2-5720128.blogspot.com/2018/01/week-2-2-django-tutorial1-4.html)
Tutorial 4 : https://docs.djangoproject.com/en/2.0/intro/tutorial04/
update template detail.html โดยใช้ html forms ให้ choice ใน question เป็น vote ไปที่ choice นั้น โดยเลือก choice แล้วกดปุ่ม submit จะใช้ function vote ไปที่ choice นั้นๆ
ส่วน csrf : Cross-Site Request Forgery คือ
การโจมตีแบบ CSRF จะใช้ “ตัวตน (Identity)” และ “สิทธิ์ (Privilege)” ของเหยื่อที่มีบนเว็บไซต์ ในการปลอมตัวเป็นเหยื่อและกระทำการหรือธุรกรรมไม่พึงประสงค์ แฮ็คเกอร์จะพยายามใช้ประโยชน์จากเหยื่อที่มี Login Cookies เก็บไว้ในเว็บเบราเซอร์ ส่งผลให้เว็บไซต์ E-commerce ที่ส่ง Cookie ไปเก็บข้อมูลการพิสูจน์ตัวตนของผู้ใช้มักตกเป็นเป้าหมายของการโจมตีนี้
การโจมตีแบบนี้ตรวจจับได้ยากเนื่องจากเป็นการกระทำธุรกรรมปกติในนามของเหยื่อเอง ทั้งข้อมูลการพิสูจน์ตัวตนและ IP ต่างถูกนำมาใช้เพื่อยืนยันว่าเป็นเจ้าของบัญชีทำธุรกรรมจริง ส่งผลให้ทางธนาคารต้องใช้เวลานานในการเก็บข้อมูลและสืบสวน ก่อนที่จะดำเนินเรื่องย้อนหลังการทำธุรกรรม หรือทำให้ธุรกรรมเป็นโมฆะไป
( ข้อมูลจาก : https://www.techtalkthai.com/how-to-prevent-csrf/ )
( ข้อมูลจาก : https://www.techtalkthai.com/how-to-prevent-csrf/ )
แล้วจากนั้น update vote() ใน views.py ถ้าไม่เลือก choice ใน detail จะแสดง "You didn't select a choice" แล้วถ้าเลือกแล้วจะเพิ่มค่าตัวแปรนับจำนวน vote ของ choice นั้นขึ้นอีก 1
(choice.votes += 1) แล้วจึง render หน้า results.html
เมื่อทดสอบ runserver แล้วเข้าหน้า detail ของ คำถามแรกจะแสดงดังนี้
ต่อมาทำการ update function results() ใน views.py และสร้าง template results.html ให้ตัวแปร question เก็บ question หรือถ้าไม่มี question นั้นๆจะแสดง error404 แล้ว render หน้า results ของ question นั้นๆว่ามีกี่ votes ในแต่ละ choice
เมื่อทดสอบ runserver แล้วเข้าหน้า detail ของคำถามแรก เลือก "The sky" จะแสดงหน้า results ซึ่งมีผลดังนี้
Use generic views : Less code is better
1. Convert the URLconf.
2. Delete some of the old, unneeded views.
3. Introduce new views based on Django’s generic views.
1.ทำการแก้ urls.py ของเราให้กระชับขึ้น
- index : แก้ให้เรียกตามคลาสที่เรากำลังจะไปแก้ใน views.py จาก function index() เป็น class IndexView()
- detail : ในเหตุคล้าย index แต่แก้ path เป็น pk (primary key) แทน question_id
- results : ในเหตุคล้าย index แต่แก้ path เป็น pk (primary key) แทน question_id
- votes : ใช้ function ตามเดิม
ต่อมาปรับ views.py ให้ใช้ class แทน function ใน index(เงื่อนไขเดิมโชว์คำถาม 5 คำถามล่าสุดตามวันที่) , detail และ results
ไม่มีความคิดเห็น:
แสดงความคิดเห็น