Django Academy · Lekcja

ModelViewSet i routery

Automatyczne generowanie tras CRUD

Lekcja 1 z 413 kroki

ModelViewSet i routery to bezpłatna lekcja Django Academy na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Django Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Django Academy zawiera 4 lekcji w sumie.

Problem powtarzalności CRUD

Ręczne pisanie operacji listowania, tworzenia, pobierania, aktualizowania i usuwania oznacza dużo niemal identycznego kodu. ViewSet łączy to wszystko w jednej uporządkowanej klasie.

Poznaj ModelViewSet

ModelViewSet zapewnia pełny CRUD dla modelu przy niemal zerowej ilości kodu. Wystarczy wskazać queryset i serializer, a resztą zajmie się on.

from rest_framework import viewsets

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

Dwa atrybuty wykonują całą pracę

Te dwie linie definiują całą klasę. queryset określa, które wiersze są uwzględniane, a serializer_class — jak zamienić je na JSON. 📦

Działania dostępne od razu

ModelViewSet udostępnia pięć działań: list, create, retrieve, update, partial_update i destroy. Żadnego z nich nie trzeba było pisać ręcznie.

Dlaczego istnieją routery

ViewSet grupuje działania, ale adresy URL nadal trzeba skonfigurować. Router odczytuje ViewSet i automatycznie generuje wszystkie wzorce adresów URL.

Rejestrowanie za pomocą DefaultRouter

Utwórz DefaultRouter, zarejestruj w nim ViewSet z określonym prefiksem, a wygeneruje on za Ciebie cały zestaw adresów URL.

from rest_framework.routers import DefaultRouter

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

Podłączanie adresów URL routera

Router udostępnia router.urls — gotową listę wzorców. Dodaj ją do urlpatterns, a endpointy natychmiast staną się dostępne.

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

Utworzone właśnie adresy URL

Zarejestrowanie jednego ViewSet zapewnia /books/ do listowania i tworzenia oraz /books/{id}/ do pobierania, aktualizowania i usuwania. 🚀

Metody HTTP odpowiadają działaniom

Router mapuje metody na działania: GET pobiera listę, POST tworzy, GET z identyfikatorem pobiera konkretny element, PUT lub PATCH aktualizuje, a DELETE usuwa. Jeden ViewSet, sześć zachowań.

DefaultRouter a SimpleRouter

DefaultRouter dodaje przydatny widok główny API, który wyświetla listę endpointów. SimpleRouter pomija go, gdy potrzebują Państwo bardziej zwięzłego zestawu adresów URL.

Dodawanie niestandardowego działania

Potrzebują Państwo dodatkowego endpointu? Dekorator @action dodaje niestandardową trasę do ViewSet bez wychodzenia poza klasę.

from rest_framework.decorators import action

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

Szybkie sprawdzenie

Czas utrwalić sposób współdziałania ViewSetów i routerów.

Podsumowanie: CRUD w kilku liniach

Dowiedzieli się Państwo, że ModelViewSet wraz z routerem zamieniają dwie krótkie klasy w kompletne API CRUD z przejrzystymi adresami URL wygenerowanymi automatycznie. Świetna praca! 🎉

Bezpłatny start

Ucz się Python dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
30
Lekcje
120

Często zadawane pytania

Czy lekcja „ModelViewSet i routery” jest bezpłatna?

Tak — pełny tekst „ModelViewSet i routery” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Django Academy, przejdź na CoddyKit PRO. Kurs Django Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „ModelViewSet i routery”?

Automatyczne generowanie tras CRUD Ćwiczysz Django Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Django Academy?

Nie wymagamy żadnego doświadczenia. Django Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.

Ile czasu zajmuje lekcja „ModelViewSet i routery”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Django Academy?

Tak. Każda lekcja Django Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. ModelViewSet i routery
  2. Uprawnienia i ograniczanie częstotliwości
  3. Uwierzytelnianie tokenami i JWT
  4. Filtrowanie, wyszukiwanie i stronicowanie
← Powrót do Django Academy