[Django_Rest_Framework] Views and Viewsets

Rex Chiang
Sep 26, 2021

rest_framework.views

  1. rest_framework.views inherit from django.views
  2. rest_framework.views.APIView inherit from django.views.generic.View
  3. rest_framework.generics.GenericAPIView inherit from APIView

rest_framework.viewsets

  1. rest_framework.viewsets.GenericViewSet inherit from GenericAPIView
  2. rest_framework.viewsets.ModelViewSet inherit from GenericViewSet

APIView

views.py

class Login(APIView):
def get(self,request):
""" Get Model Data """
""" Serialization """
...
def post(self,request):
""" Get Model Data """
""" Serialization """
...

urls.py

urlpatterns = [
path(‘login/’, views.Login.as_view()),
]

GenericAPIView

views.py

class Login(GenericAPIView):
serializer_class = LoginSerializer
queryset = LoginModel.objects.all()

def get(self,request):
...

def post(self,request):
...

urls.py

urlpatterns = [
path(‘login/’, views.Login.as_view()),
]

ModelViewSet

models.py

class LoginModel(models.Model):
...

serializers.py

from .models import LoginModel
from rest_framework import serializers

class LoginSerializer(serializers.ModelSerializer):
class Meta:
model = LoginModel
fields = "__all__"

views.py

class Login(ModelViewSet):
serializer_class = LoginSerializer
queryset = LoginModel.objects.all()

urls.py

from rest_framework import routers

router = routers.DefaultRouter()
router.register("", views.Login)

urlpatterns = [
path(‘login/’, include(router.urls)),
]

--

--