ลงทะเบียนฟังก์ชัน errorhandler
ปรับแต่งการตอบกลับสำหรับ 404 และ 500
ลงทะเบียนฟังก์ชัน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- abort และรหัสข้อผิดพลาด HTTP
- ลงทะเบียนฟังก์ชัน errorhandler
- ส่งคลาสข้อยกเว้นแบบกำหนดเอง
- โครงห่อหุ้มข้อผิดพลาด JSON แบบเดียวกัน