ViewSets और Routers
class ModelNameViewSet(viewsets.ModelViewSet):
queryset = ModelName.objects.all()
serializer_class = ModelNameSerializer
router = DefaultRouter()
router.register('route', ModelNameViewSet)
urlpatterns = router.urls
एक ModelViewSet बनाना
ModelViewSet एक model के लिए objects list, retrieve, create, update, और delete करने की logic combine करता है, इसके queryset और serializer_class उपयोग करते हुए।
उदाहरण: Creating a ModelViewSet
ModelViewSet combines the logic of listing, retrieving, creating, updating, and deleting objects for a model, using its queryset and serializer_class.
from rest_framework import viewsets
from .models import Book
from .serializers import BookSerializer
class BookViewSet(viewsets.ModelViewSet):
queryset = Book.objects.all()
serializer_class = BookSerializer
{# Django-only code -- models.py/views.py/urls.py/settings.py
snippets, or template markup using Django template tags/variables
-- can't run standalone via Judge0 or the browser preview, since
it needs a real Django project. Only this course's pure-Python
examples (example_lang == 'python', no Django imports) are
actually runnable, so those still get the button below. #}
एक Router के साथ Register करना
DefaultRouter ViewSet को inspect करता है और सारे standard URL patterns (list, detail, create, update, delete) अपने आप generate करता है।
उदाहरण: Registering with a Router
DefaultRouter inspects the ViewSet and generates all the standard URL patterns (list, detail, create, update, delete) automatically.
from django.urls import path, include
from rest_framework.routers import DefaultRouter
from .views import BookViewSet
router = DefaultRouter()
router.register('books', BookViewSet, basename='book')
urlpatterns = [
path('api/', include(router.urls)),
]
{# Django-only code -- models.py/views.py/urls.py/settings.py
snippets, or template markup using Django template tags/variables
-- can't run standalone via Judge0 or the browser preview, since
it needs a real Django project. Only this course's pure-Python
examples (example_lang == 'python', no Django imports) are
actually runnable, so those still get the button below. #}
कौन से URLs Generate होते हैं
BookViewSet को books के under register करना बिना हाथ से एक भी path() लिखे RESTful endpoints का एक पूरा set produce करता है।
उदाहरण: What URLs Get Generated
Registering BookViewSet under books produces a full set of RESTful endpoints without writing a single path() manually.
GET /api/books/ -> list all books
POST /api/books/ -> create a book
GET /api/books/1/ -> retrieve book with id 1
PUT /api/books/1/ -> update book with id 1
DELETE /api/books/1/ -> delete book with id 1
⚠️ Run this in your own terminal or Node.js environment.
- एक ModelViewSet के लिए इसे एक router के साथ register करने के बजाय हाथ से separate URL patterns लिखना, वह काम duplicate करते हुए जो router पहले से करता है।
- ViewSet को View के साथ confuse करना — एक ViewSet सीधे एक URL से map नहीं होता, यह एक router द्वारा generated related URLs के एक set से map होता है।
- Router के generated urls (
router.urls) को project की URL configuration में include करना भूल जाना।
- ModelViewSet एक single class से list, retrieve, create, update, और destroy actions provide करता है।
- DefaultRouter एक registered ViewSet के लिए URL patterns अपने आप generate करता है, एक browsable API root सहित।
- एक ViewSet को router के साथ register करना हर URL pattern हाथ से लिखने की जगह लेता है।
Chapter Quiz — Complete all 6 topics to unlock
0/6 topics done
Complete these topics first: