주니어 데이터 엔지니어 우솨's 개발일지

시리얼라이저(Serializer)와 에러(Error) 본문

Django

시리얼라이저(Serializer)와 에러(Error)

우솨 2024. 4. 28. 13:05

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 라이브러리를 통해 같은 기능을 하는 코드를 훨씬 더 코드를 간결하게 만들 수 있다.

'Django' 카테고리의 다른 글

Django 기본  (0) 2024.04.28
테스트 기능(Test)  (0) 2024.04.28
유저(User)와 기능(투표, 질문)  (0) 2024.04.28
뷰(View)와 템플릿(template)  (1) 2024.04.28