วันอาทิตย์ที่ 5 กุมภาพันธ์ พ.ศ. 2560

App polls modify

     จาก week 4-2 SPN ได้บอกว่าให้ลองไปพัฒนา app polls ต่อ ให้มันสร้างคำถามได้ สร้างตัวเลือกได้ผลที่ออกมาคือ ...


สามารถเพิ่มคำถามเพิ่มได้แล้ว !!!

ในส่วนนี้ก็ใช้เรื่องของ form มาช่วย โค้ดจะมีหน้าตาดังนี้

 
    โค้ดส่วนนี้จะอยู่ข้างล่างของโค้ด index.html โดยจะมี input แบบ text โดยเมื่อใส่คำถาม แล้วกด add ก็จะไปดึง function add_question มาทำงานต่อไป ปล.ในรูุป _ มันหายไปยังไงก็ไม่ทราบ




    ใน add_question ก็มีการรับค่าของ new_question หรือก็คือค่า text ที่ผู้ใช้ใส่มา เก็บไว้ในตัวแปร text_value หลักจากนั้นก็เอาไปใส่ใน model Question โดยอิงจาก tutorial ในส่วนของการเพิ่มคำถาม แล้วก็ redirect ไปยังหน้า index อีกครั้งเหมือนเป็นการ refresh หน้าให้ update คำถาม

ต่อไปแค่เพิ่มคำถามยังไม่พอ ต้องให้มันเพิ่มตัวเลือกได้ด้วย !! หน้าตาก็ออกมาประมาณนี้



    หลักการก็คล้ายๆกับการ add คำถามเลย เพียงแต่รอบนี้จะมีเรื่องของ id คำถามมาเกี่ยวด้วยเนื่องจากคำถามแต่ละคำถามต่างก็มี choice ของตัวเอง และ แต่ละคำถามก็มี id ของตัวเองเช่นเดียวกัน


    เริ่มต้นก็จะเหมือนกับส่วนตะกี้ ก็คือใน templates ของ detail.html เราก็เพิ่ม form อีกตัว แต่อันนี้ action หลังจากกดปุ่ม submit จะเป็นการดึง function add_choice และ ใส่ question.id ต่อท้ายไปด้วย


    ใน urls.py ก็จะใส่ regex เป็นดังรูป ใส่ค่าให้กับตัวแปรชื่อ question_id เพื่อไปให้กับ function add_choice 


    มีการรับค่า new_choice ซึ่งเป็นค่า text มาจากใส่ข้อมูลลงในหน้า detail มาเก็บไว้ในตัวแปรชื่อ text_value(อีกแล้ว) หลังจากนั้นก็ เอาค่า question_id ไปใช้ในการเรียก object คำถามที่มี ID นั้นๆ แล้วก็ create choice_text ใส่ไป และ default ค่า votes = 0 แล้วก็ redirect ไปหาหน้า detail เช่นเดิม พร้อมกับส่ง args เป็น question_id ไปด้วยจะได้แสดงถูกคำถาม

    ต่อมาก็จะทำให้หน้าแสดงผลลัพธ์ หรือ result แสดงผลออกมาเป็นแบบตารางเพื่อความเป็นระเบียบเรียบร้อย ผลที่ได้คือ .....!!




    ก็จะเป็นการแสดงผลแบบ ตารางอย่างง่ายๆ


    ก็จะกำหนด style ให้กับพวก table th td ให้เป็นแบบมีเส้นสีดำทั้งหมด แล้วก็จะปรับความกว้างไปสัก 50% จะได้ไม่ขยายไปเยอะเกินไป แล้ว ก็ใช้ ลูป for วนปริ้นท์ แยกระหว่างตัวเลือก และ ผลโหวต แค่นี้ก็เสร็จแล้ว !!







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

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