วันจันทร์ที่ 12 มีนาคม พ.ศ. 2561

Django Tutorial(3)

เนื่องจากเดิมอันเดิมยาวและติดกันเกินไปทำให้ยากต่อการอ่าน
จึงแยก (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 3 : https://docs.djangoproject.com/en/2.0/intro/tutorial03/


ต่อมาทำการเพิ่มฟังก์ชันใน view โดยประกอบไปด้วย
- index : หน้าหลัก(เหมือนใน tutorail01)
- detail : แสดงลายละเอียดของแต่ละโพล (โดย response โชว์ "You're looking at question %s"(sting) question_id ของโพลนั้นๆ)
- results : แสดงผลของโพลนั้นๆว่ามีกี่โหวต แต่ในขั้นตอนนี้ยัง response โชว์ "You're looking at results of question %s"(sting) question_id ของโพลนั้นๆ
- vote : ฟังก์ชันโหวตใน app polls แต่ในขั้นตอนนี้ยัง response โชว์ "You're voting on question %s"(sting) question_id ของโพลนั้นๆ



ต่อมาเพิ่ม path ของแต่ละ function ที่เพิ่มใน views.py ใน urls.py
- index : ใช้ path เช่นเดิม
- detail : ใช้ path ตาม question_id
- results : ใช้ path ตาม question_id ต่อด้วย "/results/"
- vote : ใช้ path ตาม question_id ต่อด้วย "/vote/"


โดยถ้าใช้เป็นคำสั่ง repath() หรือ url() จะด้องใช้ regular expression ของ django

Regular expression : การกำหนดรูปแบบหรือกลุ่มคำ เพื่อเอาไว้ใช้ค้นหาข้อความต่างๆตามที่เราต้องการ สามารถค้นหาได้ทั้งอักขระธรรมดา หรือค้นหาความข้อที่กำหนดไว้

( ข้อมูลจาก : https://www.webforefront.com/django/regexpdjangourls.html )


แต่ใน tutorial03 ใช้ path โดยกำหนดแบบง่ายๆว่าเป็น question_id ซึ่งเป็น integer



เมื่อทดสอบตาม urls ที่กำหนด



ต่อมาทำการแก้ index ใน views.py เพื่อแสดงคำถามต่างๆเรียงตามวันที่ 5 อันล่าสุด โดยข้างล่างเป็นตัวอย่างการแสดงผลแต่เพิ่มไปเพียงคำถามเดียวจึงแสดงแต่คำถามเดียวคือ "What's up?" 

ต่อมาเพิ่ม function ที่จงใจให้เกิด error ลงไปใน views.py โดย
- testError1 : โชว์ error page not found
- testError2 : โชว์ status 201


( ข้อมูลจาก : https://httpstatuses.com/201 )



เนื่อง function index() ใน views.py ใช้ hard code ทำให้ยากต่อการพัฒนา จึงทำการ สร้าง template

โดย django จะหา จาก ใน TEMPLATES ข้างใน settings.py โดย default จะ track ตาม folder template ที่อยู่ใน app ที่เจอใน INSTALLED_APPS ใน settings.py

และทำการสร้าง folder polls และ file index.html เพื่อช่วยในการแสดงผลโดยวน "{% ... %}" เพื่อใช้ python ใน html โดยวนลูปโชว์ question ในตัวแปร latest_question_list ที่กำหนดไว้ใน views.py โดยแต่ละ question link ไปที่หน้า detail ของ question นั้นๆ ถ้าไม่มีคำถามจะแสดง "No polls are available."

polls/templates/polls/index.html


ทำการแก้ฟังก์ชัน index() ใน views.py ให้สอดคล้องกับ template index.html ที่เราสร้างโดยให้เรียกใช้ template ที่เราสร้าง และ กำหนดตัวแปร latest_question_list เป็น question ล่าสุดเรียงตามวันที่ 5 question 

ทดสอบ runserver และเข้าหน้า index จะได้ตรงตามที่เรากำหนดไว้ข้างต้น 

ต่อมาเพิ่ม function detail() ใน views.py โชว์รายละเอียดใน question แต่ในขั้นต้นโชว์แค่เพียงคำถามถ้าไม่เจอคำถาม(ไม่มี question_id นั้นถูกสร้างขึ้น) จะโชว์ 404 page not found
(และสร้าง template ของ detail (detail.html) ด้วยเช่นกัน)


ต่อมาทำการแก้ทั้ง template และ function ของ detail ใน detail.html และ views.py ตามลำดับ โดยจะแสดงผล question และ choice ใน question นั้นๆ




ต่อมาทำใส่ชื่อ app_name ใน urls.py เพื่อให้ง่ายต่อการเรียกใช้ใน template 
จากเดิม

เป็นดังนี้ เพื่อให้มีความ specific มากขึ้นจะได้ไม่สับสนเมิื่อมีหลาย app


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

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