애플리케이션과 DRF 애플리케이션의 코드 차이점 예시

Django application

# views.py
from django.shortcuts import render
from django.http import HttpResponse

def home(request):
    context = {'name': 'John'}
    return render(request, 'home.html', context)
# urls.py
from django.urls import path
from . import views

urlpatterns = [
    path('', views.home, name='home'),
]

위 예시에서는 home 함수가 request 객체를 처리하고, render 함수를 사용하여 HTML 템플릿과 context 변수를 조합하여 HttpResponse 객체를 반환합니다.

Django REST Framework application

# serializers.py
from rest_framework import serializers
from .models import Task

class TaskSerializer(serializers.ModelSerializer):
    class Meta:
        model = Task
        fields = '__all__'
# views.py
from rest_framework import viewsets
from .serializers import TaskSerializer
from .models import Task

class TaskViewSet(viewsets.ModelViewSet):
    queryset = Task.objects.all()
    serializer_class = TaskSerializer
# urls.py
from django.urls import include, path
from rest_framework import routers
from . import views

router = routers.DefaultRouter()
router.register(r'tasks', views.TaskViewSet)

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

TaskSerializer 클래스를 정의하여 Task 모델을 직렬화하고, TaskViewSet 클래스를 사용하여 CRUD 작업을 수행하는 API 엔드포인트를 정의합니다. 이러한 API 엔드포인트는 router 객체를 통해 URL 패턴에 등록되며, 클라이언트는 JSON 데이터를 주고받습니다.