/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
'airbnb clone coding' 카테고리의 다른 글
[Django] 11_2. REST API: Rooms (0) | 2024.08.12 |
---|---|
[Django] 11_1. REST API: amenities / perks (0) | 2024.08.06 |
[Django] 9_2. URLs and Views: render / Django Templates / DoesNotExist / Django vs. React (0) | 2024.07.16 |
[Django] 9_1. URLs and Views: Views / Include / URL Arguments (0) | 2024.07.16 |
[Django] 8_2. Power Admin: Admin Actions / Custom Filters (0) | 2024.07.16 |