Django Academy · บทเรียน

ModelViewSet และเราเตอร์

สร้างเส้นทาง CRUD โดยอัตโนมัติ

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

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

ปัญหาการเขียน CRUD ซ้ำ ๆ

การเขียนรายการ สร้าง อ่าน อัปเดต และลบด้วยตนเองทำให้มีโค้ดที่เกือบเหมือนกันจำนวนมาก ViewSetจะรวมทั้งหมดไว้ในคลาสเดียวที่เป็นระเบียบ

ทำความรู้จัก ModelViewSet

ModelViewSet มอบ CRUD อย่างครบถ้วนสำหรับโมเดลแทบจะโดยไม่ต้องเขียนโค้ด เพียงระบุชุดคำค้นและตัวจัดลำดับข้อมูล แล้วมันจะจัดการส่วนที่เหลือให้

from rest_framework import viewsets

class BookViewSet(viewsets.ModelViewSet):
    queryset = Book.objects.all()
    serializer_class = BookSerializer

แอตทริบิวต์สองรายการก็ทำงานได้

สองบรรทัดนี้รับผิดชอบทั้งคลาส queryset ระบุว่าแถวใดอยู่ในขอบเขตการทำงาน ส่วน serializer_class ระบุวิธีแปลงแถวเหล่านั้นเป็น JSON 📦

การดำเนินการที่มีให้พร้อม

ModelViewSet มีการดำเนินการห้ารายการ ได้แก่ list, create, retrieve, update, partial_update และ destroy คุณไม่ต้องเขียนรายการเหล่านี้ด้วยตนเองเลย

เหตุผลที่มีเราเตอร์

ViewSet รวมการดำเนินการไว้ด้วยกัน แต่ URL ยังต้องเชื่อมต่อให้ทำงาน เราเตอร์จะอ่าน ViewSet ของคุณและสร้างรูปแบบ URL ทุกแบบให้อัตโนมัติ

การลงทะเบียนด้วย DefaultRouter

สร้าง DefaultRouter ลงทะเบียน ViewSet ของคุณภายใต้คำนำหน้า แล้วระบบจะสร้างชุด URL ทั้งหมดให้

from rest_framework.routers import DefaultRouter

router = DefaultRouter()
router.register(r'books', BookViewSet)

นำ URL ของเราเตอร์มาเชื่อมต่อ

เราเตอร์จะแสดง router.urls ซึ่งเป็นรายการรูปแบบ URL ที่พร้อมใช้ เพียงเพิ่มรายการนี้ลงใน urlpatterns แล้วปลายทางก็จะพร้อมใช้งานทันที

urlpatterns = [
    path('api/', include(router.urls)),
]

URL ที่คุณเพิ่งสร้าง

การลงทะเบียน ViewSet หนึ่งรายการจะให้ /books/ สำหรับการแสดงรายการและการสร้างข้อมูล รวมถึง /books/{id}/ สำหรับการอ่าน อัปเดต และลบ 🚀

เมธอด HTTP เชื่อมกับการดำเนินการ

เราเตอร์จะจับคู่เมธอดกับการดำเนินการดังนี้: GET แสดงรายการ, POST สร้างข้อมูล, GET ที่มีรหัสจะอ่านข้อมูล, PUT หรือ PATCH อัปเดตข้อมูล และ DELETE ลบข้อมูล ViewSet เดียว รองรับพฤติกรรมหกแบบ

DefaultRouter กับ SimpleRouter

DefaultRouter เพิ่มมุมมองรากของเอพีไอที่แสดงรายการปลายทางให้ ส่วน SimpleRouter จะข้ามส่วนนี้เมื่อคุณต้องการชุด URL ที่กระชับกว่า

เพิ่มการดำเนินการแบบกำหนดเอง

ต้องการปลายทางเพิ่มเติมหรือไม่ ตัวตกแต่ง @action จะเพิ่มเส้นทางแบบกำหนดเองให้ ViewSet โดยไม่ต้องนำออกจากคลาส

from rest_framework.decorators import action

@action(detail=True, methods=['post'])
def favorite(self, request, pk=None):
    ...

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

มาทบทวนให้เข้าใจอย่างมั่นคงว่า ViewSet และเราเตอร์ทำงานร่วมกันอย่างไร

สรุป: CRUD ในไม่กี่บรรทัด

คุณได้เรียนรู้ว่า ModelViewSet และเราเตอร์เปลี่ยนคลาสสั้น ๆ สองคลาสให้เป็นเอพีไอ CRUD ที่สมบูรณ์ พร้อม URL ที่เป็นระเบียบซึ่งระบบสร้างให้คุณ ทำได้ดีมาก! 🎉

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

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

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

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

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

บทเรียน “ModelViewSet และเราเตอร์” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “ModelViewSet และเราเตอร์”

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

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

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

บทเรียน “ModelViewSet และเราเตอร์” ใช้เวลานานแค่ไหน

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

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

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

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

  1. ModelViewSet และเราเตอร์
  2. สิทธิ์และการจำกัดความถี่
  3. การยืนยันตัวตนด้วยโทเค็นและ JWT
  4. การกรอง การค้นหา และการแบ่งหน้า
← กลับไปที่ Django Academy