Programming/장고(django) - API

장고(django)/ REST Framework(serializers 관련)

esoog Polaris 2023. 6. 8. 12:59
반응형
from rest_framework import serializers

먼저 시리얼라이저는 Django 모델 데이터를 직렬화하거나 역직렬화해서 api 통신하는 데 사용됩니다.

1. UserSerializer(serializers.ModelSerializer): `serializers.ModelSerializer`를 상속받는 클래스입니다. 이 클래스는 Django 모델과 연결된 시리얼라이저로, 모델의 필드와 관련된 직렬화 및 역직렬화 로직을 자동으로 생성해줍니다. `ModelSerializer`는 모델 클래스와 연결하여 필드, 유효성 검사 등을 자동으로 처리합니다.

class UserSerializers(serializers.ModelSerializer):
    class Meta:
        model = All_data
        fields = '__all__'



2. UserSerializer(serializers.HyperlinkedModelSerializer): `UserSerializer`는 `serializers.HyperlinkedModelSerializer`를 상속받는 클래스입니다. 이 클래스는 하이퍼링크를 포함하는 시리얼라이저로, 관계된 모델에 대한 하이퍼링크를 자동으로 생성해줍니다. `HyperlinkedModelSerializer`는 모델 클래스와 연결하여 하이퍼링크를 처리하고 필드, 유효성 검사 등을 자동으로 처리합니다.

class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ['url', 'username', 'email', 'groups']

 

 

차이점:
- `ModelSerializer`는 모델과 관련된 직렬화 및 역직렬화 로직을 자동으로 생성해줍니다. 

`HyperlinkedModelSerializer`는 하이퍼링크를 포함하는 시리얼라이저로, 관계된 모델에 대한 하이퍼링크를 자동으로 생성해줍니다.
- 필드 지정 방식이 다릅니다.

`ModelSerializer`는 `fields = '__all__'`와 같이 `__all__`을 사용하여 모든 필드를 포함시킬 수 있습니다. `HyperlinkedModelSerializer`는 필요한 필드를 직접 명시해야 합니다.

728x90