본문 바로가기
airbnb clone coding

[Django] 10. Django REST Framework: JsonResponse / api_view / Serializer / ViewSet

by busybee-busylife 2024. 7. 23.
반응형

 

/rooms -> JSON -> UI

유저가 /rooms 페이지로 이동하면 -> ReactJS가 해당 JSON을 예쁘게 만들어 UI를 만들어준다 

유저는 Django 서버에서 실제로 /rooms url로 직접 이동하지 X

프론트엔드의 React UI 애플리케이션이 서버에게 데이터를 요청하는 것 

 

GET: 데이터를 가져옴

POST: 서버에 데이터를 보냄 

 

주요과정

1. decorator로 decorated된 API view 함수: 데이터베이스에 있는 모든 카테고리를 가져와서 serializer에게 전달

2. serializers.py에서 무엇을 어떻게 번역할지를 지정 

 

categories > urls.py 파일 만들어서 urlpatterns 리스트 만들기 

categories > views.py 파일에서 view 함수 만들기 

config > urls.py 의 urlpatterns 리스트에 path 추가 

categories > serializers.py 파일 만들어서 category에 대한 serializer를 만든다(어떻게 카테고리가 JSON으로 표현될 지)

 

 

 

 

Serializer 

일종의 번역기(다른 포맷으로 변경): QuerySet -> JSON(혹은 JSON -> python) 등

Django Serialization 프레임워크는 커스터마이징을 위한 많은 기능을 제공하지 않는다 

--> 그래서 Django REST framework serializer를 사용한다! 

 

Django REST framework

어떤 url에서, 어떤 view 함수에서 REST framework의 도움을 받을지 선택 

REST framework는 JsonResponse, serializers를 대체한다 

 

Django Core Serializer vs. REST framework 

우선 Django Core Serializer를 사용해보고, REST framework와 비교해본다. 

 

 

Django Core Serializer 

categories > serializers.py 파일 만들어서 category에 대한 serializer를 만든다(어떻게 카테고리가 JSON으로 표현될 지)

 

 

 

 

 

Django REST framework 

categories > views.py 에서 Categories, CategoryDetail 클래스 생성 

categories > urls.py 의 urlpatterns도 그에 알맞게 수정 

categories > serializers.py 에서 ModelSerializer 클래스를 만든다

          : models.py 에 있는 것들을 자동으로 가져온다 + create, update 메서드를 자동으로 생성

 

 

 

 

ViewSets

: 너무 자동으로 많은 것을 해줘서 less explict (customizing 어려움)

 

categories > views.py 에서 ModelViewSet을 상속받는 클래스 생성 

categories > urls.py 의 urlpatterns도 그에 맞게 수정 

 

 

 

 

 

 

Ref.

https://www.youtube.com/watch?v=4DxHX95Lq2U

https://www.django-rest-framework.org/api-guide/viewsets

 

 

반응형