Serializer - KEEMSY/DRF_AFTER_CLASS GitHub Wiki

Serializer

: object, queryset 인스턴스 등 복잡한 형태의 데이터들을 json 같은 다른 컨텐츠 유형으로 쉽게 변환 시켜주는 기능을 한다.

  • create, validate, update 등 설정을 할 수 있다.

기본적인 사용 형태

userapp/serializers.py

from rest_framework import serializers

class UserSerializer(serializers.ModelSerializer):
   class Meta:
        # serializer에 사용될 model, field지정
        model = User
        # 모든 필드를 사용하고 싶을 경우 fields = "__all__"로 사용
        fields = ["username", "password", "fullname", "email"]

userapp/views.py

from rest_framework.response import Response
from rest_framework import status

from user.serializers import UserSerializer

def get(self, request):
    user = request.user
    # serializer에 queryset을 인자로 줄 경우 many=True 옵션을 사용해야 한다.
    serialized_user_data = UserSerializer(user).data
    # context= 를 통해 원하는 데이터를 serializer에 넘겨주고, self.context를 사용해 호출 가능하다.
    # serialized_user_data = UserSerializer(user, context={"some_key": "some_value"}).data
    return Response(serialized_user_data, status=status.HTTP_200_OK)

# return data
"""
{
    "username": "user",
    "password": "pbkdf2_sha256$320000$u5YnmKo9luab9csqWpzRsa$pKfqHnBiF5Rgdo1Mj9nxNOdhpAl9AhPVXFPXkbPz7Mg=",
    "fullname": "user's name",
    "email": "[email protected]"
}
"""