학습내용
Serialize
모델 인스턴스나 queryset과 같은 데이터를 JSON 형식의 파일로 변환하는 작업
Deserialize
JSON형식의 데이터를 정의된 포맷에 맞추어 다시 모델 인스턴스로 변환하는 작업
from rest_framework import serializers
from polls.models import Question
class QuestionSerializer(serializers.Serializer) :
id = serializers.IntegerField(read_only=True)
question_text = serializers.CharField(max_length=200)
pub_date = serializers.DateTimeField(read_only=True)
def create(self, validated_data) :
return Question.objects.create(**validated_data)
def Update(self, instance, validated_data) :
instance.question_text = validated_data.get('question_text', instance.question_text) +'[시리얼라이저에서 업데이트]'
instance.save()
return instance
ModelSerializer
기본적으로 create()와 update() 메서드가 구현되어 있어, 추가로 코드를 작성해주지 않아도 그 기능을 사용할 수 있다.
위의 코드보다 훨씬 간편해짐
from rest_framework import serializers
from polls.models import Question
class QuestionSerializer(serializers.ModelSerializer) :
class Meta :
model = Question
fields = ['id', 'question_text', 'pub_date']
http메소드
참고 https://developer.mozilla.org/ko/docs/Web/HTTP/Methods
데이터 생성(Create) : POST
데이터 조회(Read) : GET
데이터 업데이트(Update) : PUT
데이터 삭제(Delete) : DELETE
HTTP Status Code
200번대 : 정상적인 결과
- 200 OK
- 201 CREATED
- 204 NOT FOUND
400번대 : 사용자의 잘못된 요청
- 400 BAD REQUEST
- 404 NOT FOUND
500번대 : 서버 내부의 오류
mixin,generics 라이브러리를 통해 같은 기능을 하는 코드를 훨씬 더 코드를 간결하게 만들 수 있다.
느낀 점
데이터를 JSON파일로 바꾸어 업로드 하는 것을 배웠다.
처음 기본 코드를 배울 땐 메소드를 계속 만들면서 엄청 길게 썼는데 클래스를 이용해 조금더 줄일 수 있었다.
마지막으로 배운 mixin으로 대부분의 코드를 줄이면서 라이브러리 속의 클래스 활용의 중요성을 느끼고 있었는데
generic을 쓰면서 대부분의 코드를 날려버리는 것에서 충격을 받았다.
유용한 라이브러리를 찾고 그것의 클래스들을 활용하는 것이 얼마나 중요한지 알 수 있는 부분이었다.
'데브코스' 카테고리의 다른 글
데이터 엔지니어링 15일차 TIL (0) | 2024.04.12 |
---|---|
데이터 엔지니어링 14일차 TIL (0) | 2024.04.11 |
데이터 엔지니어링 12일차 TIL (0) | 2024.04.09 |
데이터 엔지니어링 11일차 TIL (0) | 2024.04.08 |
데이터 엔지니어링 10일차 TIL (0) | 2024.04.05 |