본문 바로가기
데브코스

데이터 엔지니어링 13일차 TIL

by 우솨 2024. 4. 10.

학습내용

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을 쓰면서 대부분의 코드를 날려버리는 것에서 충격을 받았다.

유용한 라이브러리를 찾고 그것의 클래스들을 활용하는 것이 얼마나 중요한지 알 수 있는 부분이었다.