0Pricing
Python Academy · บทเรียน

ฟอร์มและข้อมูลคำขอ

ประมวลผลข้อมูลนำเข้าจากผู้ใช้

ฟอร์มและข้อมูลคำขอ เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. เส้นทางและวิว
  2. เทมเพลตด้วย Jinja2
  3. ฟอร์มและข้อมูลคำขอ
  4. การสร้างปลายทาง REST
← กลับไปที่ Python Academy