ModelViewSet i routery
Automatyczne generowanie tras CRUD
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 = BookSerializerDwa 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! 🎉
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
- ModelViewSet i routery
- Uprawnienia i ograniczanie częstotliwości
- Uwierzytelnianie tokenami i JWT
- Filtrowanie, wyszukiwanie i stronicowanie