Flask Academy · บทเรียน

ลงทะเบียนฟังก์ชัน errorhandler

ปรับแต่งการตอบกลับสำหรับ 404 และ 500

บทเรียน 2 จาก 413 ขั้นตอน

ลงทะเบียนฟังก์ชัน errorhandler เป็นบทเรียน Flask Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Flask Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Flask Academy มีบทเรียนทั้งหมด 4 บทเรียน

ก้าวข้ามหน้ามาตรฐาน

Flask จะแสดงหน้าข้อผิดพลาดธรรมดาให้โดยอัตโนมัติ คุณสามารถแทนที่ได้โดยลงทะเบียน errorhandler ของตนเองสำหรับรหัสสถานะใดก็ได้

ตัวตกแต่ง errorhandler

คุณผูกฟังก์ชันเข้ากับรหัสสถานะด้วยตัวตกแต่ง ตัวจัดการนี้จะทำงานทุกครั้งที่ ข้อผิดพลาดนั้นเกิดขึ้นที่ใดก็ตามในแอป

@app.errorhandler(404)
def not_found(e):
    return "Nothing here", 404

ส่งคืนทูเพิล

ตัวจัดการจะส่งคืนเนื้อหาและรหัสสถานะเช่นเดียวกับวิว รหัสสถานะช่วยให้คำตอบระบุได้อย่างตรงไปตรงมาว่าเกิดความล้มเหลวอะไรขึ้น

return "Not found", 404

อาร์กิวเมนต์ข้อผิดพลาด

ตัวจัดการแต่ละตัวจะได้รับออบเจ็กต์ข้อผิดพลาดเป็นอาร์กิวเมนต์ คุณสามารถอ่านคำอธิบายหรือรหัสของออบเจ็กต์นี้เพื่อกำหนดรูปแบบการตอบกลับได้

def not_found(e):
    return str(e.description), 404

การจัดการข้อผิดพลาด 500

การหยุดทำงานที่ไม่คาดคิดจะกลายเป็น500 โปรดลงทะเบียนตัวจัดการ เพื่อให้ผู้ใช้เห็นข้อความที่เข้าใจง่ายแทนการแสดงร่องรอยสแตกดิบ ๆ

@app.errorhandler(500)
def boom(e):
    return "Server error", 500

แสดงผลแม่แบบแทน

แอปส่วนใหญ่จะแสดงหน้าที่จัดรูปแบบไว้เมื่อเกิดข้อผิดพลาด เพียงเรียกใช้ render_template ในตัวจัดการ แล้วส่งรหัสสถานะไปด้วย

return render_template("404.html"), 404

ส่งคืน JSON สำหรับ API

API ควรตอบข้อผิดพลาดเป็น JSON ไม่ใช่ HTML โปรดใช้ jsonify เพื่อให้ไคลเอนต์แยกวิเคราะห์ความล้มเหลวได้อย่างถูกต้อง

return jsonify(error="Not found"), 404

ตัวจัดการดักจับ abort ได้เช่นกัน

การเรียกใช้ abort พร้อมรหัสจะเรียกตัวจัดการที่ตรงกัน ดังนั้น errorhandler หนึ่งตัวจึงครอบคลุมทั้งการหยุดทำงานและ abort ที่คุณเรียกเองได้

จัดการคลาสข้อยกเว้น

คุณสามารถลงทะเบียนตัวจัดการตามชนิดข้อยกเว้นได้ ไม่จำเป็นต้องใช้เฉพาะตัวเลข ส่งคลาสข้อยกเว้นเข้าไปเพื่อดักจับข้อยกเว้นทั้งกลุ่มได้ในครั้งเดียว

@app.errorhandler(ValueError)
def bad(e):
    return "Bad value", 400

ทั่วทั้งแอปกับบลูพรินต์

ตัวจัดการบน app จะมีผลทุกที่ ส่วนบลูพรินต์สามารถกำหนดขอบเขตของตัวเองได้ วิธีนี้ทำให้แต่ละส่วนของแอปขนาดใหญ่จัดการความล้มเหลวในแบบของตนเอง

เหตุใดตัวจัดการแบบกำหนดเองจึงมีประโยชน์

หน้าข้อผิดพลาดที่สอดคล้องกันช่วยรักษาเอกลักษณ์ของแบรนด์และทำให้ API เป็นระเบียบ ตัวตัวจัดการส่วนกลางทำให้คุณแก้ไขข้อความได้จากจุดเดียว

ตรวจสอบอย่างรวดเร็ว

ลองหาตัวตกแต่งที่ใช้ปรับแต่งการตอบกลับเมื่อไม่พบหน้า

สรุปทบทวน

ตอนนี้คุณสามารถลงทะเบียนฟังก์ชัน errorhandler อ่านออบเจ็กต์ข้อผิดพลาด และส่งคืน HTML หรือ JSON พร้อมรหัสที่ถูกต้องได้แล้ว พัฒนาได้ยอดเยี่ยมมาก!

เริ่มต้นได้ฟรี

เรียนรู้ Python ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

คำถามที่พบบ่อย

บทเรียน “ลงทะเบียนฟังก์ชัน errorhandler” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ลงทะเบียนฟังก์ชัน errorhandler” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Flask Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Flask Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ลงทะเบียนฟังก์ชัน errorhandler”

ปรับแต่งการตอบกลับสำหรับ 404 และ 500 คุณปฏิบัติ Flask Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Flask Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Flask Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “ลงทะเบียนฟังก์ชัน errorhandler” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Flask Academy นี้ได้ไหม

ได้ บทเรียน Flask Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. abort และรหัสข้อผิดพลาด HTTP
  2. ลงทะเบียนฟังก์ชัน errorhandler
  3. ส่งคลาสข้อยกเว้นแบบกำหนดเอง
  4. โครงห่อหุ้มข้อผิดพลาด JSON แบบเดียวกัน
← กลับไปที่ Flask Academy