개발_TIL
개발_TIL | 2022-06-23 (46)
Hee94
2022. 6. 28. 19:31
▷ 장고 DRF 특강 (7)
- serializer란?
- django의 object, queryset 인스턴스 등 복잡한 테이터들을 json같은 다른 콘텐츠 유형으로 쉽게 변환 할 수 있다.
- create, update 시 validation 기능을 제공한다.
- serializer Meta class
- serializer에서 사용되는 설정 파일이다.
- model에 사용 될 테이블을 적어주고, field에 사용될 필드를 적어준다.
- extra_kwargs, read_only_fields와 같은 옵션을 통해 다양한 설정이 가능하다.
<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"]
<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": "user@email.com"
}
"""