[Django_Rest_Framework] Views and Viewsets
Sep 26, 2021
rest_framework.views
- rest_framework.views inherit from django.views
- rest_framework.views.APIView inherit from django.views.generic.View
- rest_framework.generics.GenericAPIView inherit from APIView
rest_framework.viewsets
- rest_framework.viewsets.GenericViewSet inherit from GenericAPIView
- 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)),
]