728x90
[Django/React] 장고와 리액트 연동 (2)
Serializer 생성
frontend로 데이터를 보내기 위해 장고 내부의 복잡한 테이터들을 json/xml 등의 형태로 데이터를 변환해준다고 생각하면 된다.
Serializer는 DRF가 제공하는 클래스로, DB 인스턴스를 JSON 형식으로 생성한다.
반대로 JSON을 DB로 변경하기 위해선 deserializer가 사용된다.
serializer시엔 각각 DB 칼럼들로 정의를 해야한다.
App 디렉토리에 serializers.py를 생성하고, 모델과 필드를 작성해준다.
from rest_framework import serializers
from .models import Review
class ReviewSerializer(serializers.ModelSerializer):
class Meta:
model = Review
fields = ('id', 'title', 'content', 'updated')
CRUD View 작성
CRUD 기능을 DRF의 클래스인 Mixins로 구현
APIView를 사용하면 비슷한 논리의 view가 계속 반복되는데,
Mixins로 구현하면 상속(CBV, Class Based View)이란 특성을 사용하여 불필요한 코드의 중복을 줄일 수 있다.
먼저 필요한 모듈을 import 해준다.
from rest_framework import generics
from rest_framework import mixins
from .serializer import ReviewSerializer
from .models import Review
다음 CRUD view 작성해준다.
class ReviewList(mixins.ListModelMixin,
mixins.CreateModelMixin,
generics.GenericAPIView):
queryset = Review.objects.all()
serializer_class = ReviewSerializer
def get(self, request, *args, **kwargs):
return self.list(request, *args, **kwargs)
def post(self, request, *args, **kwargs):
return self.create(request, *args, **kwargs)
class ReviewDetail(mixins.RetrieveModelMixin,
mixins.UpdateModelMixin,
mixins.DestroyModelMixin,
generics.GenericAPIView):
queryset = Review.objects.all()
serializer_class = ReviewSerializer
def get(self, request, *args, **kwargs):
return self.retrieve(request, *args, **kwargs)
def put(self, request, *args, **kwargs):
return self.update(request, *args, **kwargs)
def delete(self, request, *args, **kwargs):
return self.destroy(request, *args, **kwargs)
프로젝트 폴더 내부의 urls.py에 urls 내용을 작성해준다.
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path("admin/", admin.site.urls),
path('', include('webApp.urls')),
]
APP 폴더 내부에 urls.py을 생성하여 내용을 작성해준다.
from django.urls import path
from rest_framework.urlpatterns import format_suffix_patterns
from .views import ReviewList, ReviewDetail
urlpatterns = [
path('review/', ReviewList.as_view()),
path('review/<int:pk>/', ReviewDetail.as_view()),
]
urlpatterns = format_suffix_patterns(urlpatterns)
그 후 서버를 실행 시킨 뒤 http://localhost:8000/review/ 로 가면 CRUD View를 확인할 수 있다.
참고
반응형
'👩💻 Develope > Web' 카테고리의 다른 글
[API][Apps Script] 공공 데이터 포탈에서 공휴일 API 가져오기 (0) | 2023.10.25 |
---|---|
[Django/React] 장고와 리액트 연동 (3) (0) | 2023.10.13 |
[Django/React] 장고와 리액트 연동 (1) (0) | 2023.10.11 |
[React] 윈도우에 리액트(React.js) 설치 (1) | 2023.10.09 |
[HTML/CSS] HTML/CSS 시작하기 (0) | 2023.10.03 |