- รูปแบบการจัดการเกี่ยวกับการรับค่าและแสดงค่าบนหน้าเว็บด้วยการจัดการร่วมกับการใช้งาน 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>
ไม่มีความคิดเห็น:
แสดงความคิดเห็น