오늘 공부한 내용🤓
- Serializer
- Serialize : 모델 인스턴스나 QuerySet과 같은 데이터를 API로 주고 받기 위해서 JSON 형식의 파일로 변환하는 작업
- Deserialize : JSON 형식의 데이터를 정의된 포맷에 맞추어 다시 모델 인스턴스로 변환하는 작업
- Serializer은 위의 2가지 동작을 모두 가지고 있다.
- API 서버에서 JSON형식으로 데이터를 주고 받기 때문에 Serializer를 사용한다.
- api용 app을 따로 만들고 그 안에 serializers.py 파일을 만든다.
- model에 serialize하기 위해서는 각 field 들을 매칭 시켜주어야 한다. 빠져버린 field는 적용이 안된기 때문에 주의해야 한다.
- Model Serializer
- 기존의 serializer보다 더 간단하고 쉽게 만들 수 있다. class가 상속받는 메서드를
serializers.ModelSerializer
로 변경한다.
- Meta라는 클래스를 만들어서 model과 fields 변수를 알맞게 채워주면 하나하나 쓸 함수를 정의할 필요 없이 생성이 가능하다.
pip install djangorestframework
설치 필요
-
CRUD 메소드
- POST : Create (Status_code : 201)
- GET : Read (Status_code : 200)
- PUT : Update (Status_code : 200)
- DELETE : Delete (Status_code : 204)
-
함수형 view vs 클래스형 view
- 함수형 view는 데코레이터(
@api_view(['GET', 'PUT', 'DELETE'])
)가 필요하지만 클래스형은 API를 상속(APIView
, mixins.RetrieveModelMixin
등)받는다.
- 함수형 view는 필요한 메소드를 모두 구현해야하지만, 클래스형은 필요한 메소드들이 이미 구현(
RetrieveUpdateDestroyAPIView
등)되어있다.
궁금한 내용 / 어려운 내용❓
- class형, 함수형 view의 성능상 차이점
- 데코레이터와 class 상속
느낀 점😊
데코레이터와 클래스의 상속에 대해 어렴풋이 알고있었는데 실제로 사용해보니 약간 긴가민가한 감이 있다. 한번만 더 개념을 복습해야할 필요가 있다는 것을 느꼈다.
함수형 view는 커스터마이징에 유용하고 클래스형 view는 간편하게 사용하기에 좋을 것 같다는 생각이 들었다. 원하는 모양으로 변경하기에 클래스형 view는 오버라이딩해야하기 때문에 조금은 번거롭지 않을까?라는 생각이 든다.
어제는 몸이 너무 좋지않아서 공부를 아예 하지 못했는데 오늘은 국취제 상담때문에 아침에 잠시 나갔다와서 그런지 몸이 상쾌한 느낌이 들었다. 집중도 잘되고 이해도 잘되었다. 매일 아침에 몸을 움직여서 컨디션을 조절해야겠다.