ฟอร์มและข้อมูลคำขอ
ประมวลผลข้อมูลนำเข้าจากผู้ใช้
ฟอร์มและข้อมูลคำขอ เป็นบทเรียน Python Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Python Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
ออบเจ็กต์ request
Flask ให้ทุกมุมมองเข้าถึงออบเจ็กต์ส่วนกลาง request ซึ่งเก็บข้อมูลขาเข้าทั้งหมด เช่น ช่องกรอกแบบฟอร์ม สตริงคำค้นหา JSON ส่วนหัว และข้อมูลอื่น ๆ
from flask import Flask, request
app = Flask(__name__)
# request is available inside any view
print('request carries the incoming data')พารามิเตอร์สตริงคำค้นหา
ข้อมูลที่อยู่หลัง ? ใน URL จะอยู่ใน request.args ใช้ .get() เพื่ออ่านค่าอย่างปลอดภัย
from flask import Flask, request
app = Flask(__name__)
@app.route('/search')
def search():
term = request.args.get('q', '')
return 'Searching for ' + term
print('/search?q=cats -> request.args')แบบฟอร์ม HTML
แบบฟอร์มจะส่งข้อมูลเมื่อมีการส่งแบบฟอร์ม แอตทริบิวต์ method และ action จะกำหนดว่าจะส่งข้อมูลด้วยวิธีใดและไปที่ใด
# <form method='POST' action='/login'>
# <input name='username'>
# <input name='password' type='password'>
# <button>Submit</button>
# </form>
print('Form posts username and password')การอ่านข้อมูลจากแบบฟอร์ม
ช่องกรอกแบบฟอร์มที่ส่งแล้วจะอยู่ใน request.form เข้าถึงได้ด้วยแอตทริบิวต์ name ของช่องกรอก
from flask import Flask, request
app = Flask(__name__)
@app.route('/login', methods=['POST'])
def login():
user = request.form['username']
return 'Welcome ' + user
print('request.form holds posted fields')การเข้าถึงอย่างปลอดภัยด้วย get
การใช้ request.form['x'] จะทำให้เกิดข้อผิดพลาดหากไม่มีคีย์ดังกล่าว ควรใช้ request.form.get('x') ซึ่งจะส่งคืน None แทน
from flask import Flask, request
app = Flask(__name__)
@app.route('/login', methods=['POST'])
def login():
user = request.form.get('username')
if not user:
return 'Missing username', 400
return 'Welcome ' + user
print('.get avoids KeyError')GET และ POST ในมุมมองเดียว
รูปแบบที่ใช้กันทั่วไปคือ แสดงแบบฟอร์มเมื่อเป็น GET และประมวลผลข้อมูลเมื่อเป็น POST โดยทำทั้งหมดในมุมมองเดียว
from flask import Flask, request, render_template
app = Flask(__name__)
@app.route('/contact', methods=['GET', 'POST'])
def contact():
if request.method == 'POST':
return 'Thanks, ' + request.form.get('name', 'friend')
return render_template('contact.html')
print('One view, two methods')การตรวจสอบข้อมูลนำเข้า
อย่าเชื่อถือข้อมูลนำเข้าจากผู้ใช้โดยอัตโนมัติ ตรวจสอบว่าช่องที่จำเป็นมีอยู่และมีค่าที่เหมาะสมก่อนนำไปใช้
from flask import Flask, request
app = Flask(__name__)
@app.route('/age', methods=['POST'])
def age():
raw = request.form.get('age', '')
if not raw.isdigit():
return 'Age must be a number', 400
return 'Age is ' + raw
print('Validate before trusting input')การอ่าน JSON
ไคลเอนต์ API มักส่งข้อมูลเป็น JSON request.get_json() จะแยกวิเคราะห์เนื้อหาให้เป็นพจนานุกรม Python
from flask import Flask, request
app = Flask(__name__)
@app.route('/api', methods=['POST'])
def api():
data = request.get_json()
return 'Got name ' + data.get('name', '?')
print('get_json parses the JSON body')การอัปโหลดไฟล์
ไฟล์ที่อัปโหลดจะอยู่ใน request.files บันทึกไฟล์ได้ด้วยวิธีการ .save() หลังจากตรวจสอบไฟล์แล้ว
from flask import Flask, request
app = Flask(__name__)
@app.route('/upload', methods=['POST'])
def upload():
f = request.files.get('photo')
if f:
return 'Received ' + f.filename
return 'No file', 400
print('request.files holds uploads')การเปลี่ยนเส้นทางหลัง POST
หลังจัดการแบบฟอร์มแล้ว ให้เปลี่ยนเส้นทางผู้ใช้เพื่อป้องกันการส่งข้อมูลซ้ำเมื่อรีเฟรชหน้า ใช้ redirect(url_for(...))
from flask import Flask, redirect, url_for
app = Flask(__name__)
@app.route('/done')
def done():
return 'All done'
@app.route('/save', methods=['POST'])
def save():
return redirect(url_for('done'))
print('Post/Redirect/Get pattern')ข้อความแจ้งเตือน
flash() เก็บข้อความที่แสดงเพียงครั้งเดียวหลังการเปลี่ยนเส้นทาง เหมาะสำหรับการยืนยัน เช่น 'บันทึกสำเร็จ'
from flask import Flask, flash, redirect, url_for
app = Flask(__name__)
app.secret_key = 'change-me'
@app.route('/save', methods=['POST'])
def save():
flash('Saved successfully')
return redirect(url_for('save'))
print('flash shows a one-time message')ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเรื่องการจัดการแบบฟอร์มของคุณ
สรุปทบทวน
คุณได้ประมวลผลข้อมูลนำเข้าจากผู้ใช้ใน Flask
request.argsใช้สำหรับสตริงคำค้นหา และrequest.formใช้สำหรับช่องกรอกแบบฟอร์มrequest.get_json()ใช้สำหรับเนื้อหา JSON และrequest.filesใช้สำหรับไฟล์อัปโหลด- ตรวจสอบข้อมูลนำเข้าเสมอ และใช้
.get()เพื่อเข้าถึงข้อมูลอย่างปลอดภัย - ใช้รูปแบบ Post/Redirect/Get และ
flash()เพื่อประสบการณ์ผู้ใช้ที่ราบรื่น
คำถามที่พบบ่อย
บทเรียน “ฟอร์มและข้อมูลคำขอ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “ฟอร์มและข้อมูลคำขอ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Python Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Python Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “ฟอร์มและข้อมูลคำขอ”
ประมวลผลข้อมูลนำเข้าจากผู้ใช้ คุณปฏิบัติ Python Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Python Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Python Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “ฟอร์มและข้อมูลคำขอ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Python Academy นี้ได้ไหม
ได้ บทเรียน Python Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- เส้นทางและวิว
- เทมเพลตด้วย Jinja2
- ฟอร์มและข้อมูลคำขอ
- การสร้างปลายทาง REST