วันพุธที่ 30 มกราคม พ.ศ. 2562

[Django] Form

Form คือ
- รูปแบบการจัดการเกี่ยวกับการรับค่าและแสดงค่าบนหน้าเว็บด้วยการจัดการร่วมกับการใช้งาน template
- เป็นตัวส่งข้อมูลไปประมวลผลฝั่ง server
- สามารถลดความซับซ้อนของงานได้

Form มีการใช้งานหลักๆ 2 แบบ คือ 
1 HTML Form
2 From class

HTML Form
       สร้างภายใต้ tag  <form>  … </form> เพื่อให้เกิดการทำงานต่างๆ เช่น การรับค่าแล้วส่งคืนไป
สำหรับส่วนที่ใช้ในการติดต่อเพื่อรับค่านั้นจะอนู่ใน tag <input> ซึ่งมีหลายรูปแบบด้วยกัน และต้องระบุ 2 สิ่งใน <input>
- ข้อมูลที่ได้รับมาจากผู้ใช้จะถูกส่งไปที่ไหน
- ใช้วิธีใดในการส่งข้อมูล

วิธีส่งข้อมูล มี 2 วิธี คือ GET และ POST

GET
- ไม่มีการเปลี่ยนแปลงที่ฐานข้อมูล
- ex. การเรียกผลลัพธ์ออกมาแสดง
- suitable for search form

POST
- มีการปลี่ยนแปลงข้อมูลที่ฐานข้อมูล
- ex. การรับผลโหวตเข้าไปเก็บไว้
- suitable for หลายๆรูปแบบ เช่น form ข้อสอบ , form การสั่งซื้อ

วิธีระบุปลายทาง
การระบุปลายทางคือ การระบุว่า HTML From ทีี่สร้างขึ้นจะถูกนำไปใช้ที่ใด โดยระบุในส่วนของ <form>

detail.html >>

<form action="{% url 'polls:vote' question.id %}" method="post">
{% csrf_token %}
{% for choice in question.choice_set.all %}
    <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}">
    <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br>
{% endfor %}
<input type="submit" value="Vote">
</form>

หมายถึง เมื่อมีการเรียกใช้ฟังก์ชันที่ใช้งาน template detail.html จะทำการสร้าง from ตามที่กำหนด
และ ส่งค่าที่ได้จาก form ไปใช้งานที่ url 'polls:vote' question.id และใช้งานฟังก์ชันตามที่ระบุไว้ใน urls.py


Form class


     มีรูปแบบและโครงสร้างเหมือน models แต่ field ของ models จะ map ไปที่ field ของฐานข้อมูล 
ส่วน field ของ form จะ map ไปที่ <input> ของ HTML

froms.py >>

from django import forms
class NameForm(forms.Form):
your_name = forms.CharField(label='Your name', max_length=100)

การใช้งาน from Django จะนำ form ที่เราสร้างไปแปลงเป็น html เอง ดังนี้

<label for="your_name">Your name: </label>
<input id="your_name" type="text" name="your_name" maxlength="100" required>



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

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