[python] Django REST framework에서의 프로필 기능 처리 방법

Django REST framework은 Django를 기반으로한 강력한 웹 프레임워크로, 웹 API를 개발하고 관리하는 데 사용됩니다. 이 프레임워크를 사용하면 사용자 프로필과 같은 추가적인 기능을 쉽게 구현할 수 있습니다.

프로필 모델 생성

첫 번째로, 사용자 프로필을 저장할 프로필 모델을 생성해야 합니다. 이 모델은 Django의 User 모델과 관계를 맺을 것입니다. 아래는 간단한 프로필 모델의 예시입니다.

from django.contrib.auth.models import User
from django.db import models

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    bio = models.TextField()
    avatar = models.ImageField(upload_to='avatars/')

위의 코드에서 OneToOneFieldUser 모델과의 1:1 관계를 정의하는 필드입니다. bio는 사용자에 대한 간단한 설명을 저장하는 필드이고, avatar는 사용자의 프로필 사진을 저장하기 위한 필드입니다.

시리얼라이저 작성

다음으로, 프로필 모델의 시리얼라이저를 작성해야 합니다. 시리얼라이저는 모델 인스턴스를 JSON 형식으로 직렬화하고, 역직렬화하여 실제 모델로 변환하는 역할을 합니다. 아래는 프로필 모델의 시리얼라이저의 예시입니다.

from rest_framework import serializers
from .models import Profile

class ProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = Profile
        fields = ['id', 'user', 'bio', 'avatar']

위의 코드에서 fields는 시리얼라이저에서 직렬화할 필드를 지정하는 리스트입니다. 이 예시에서는 id, user, bio, avatar 필드가 직렬화됩니다.

프로필 뷰셋 작성

마지막으로, 프로필을 보여주거나 수정할 수 있는 뷰셋을 작성해야 합니다. 아래는 뷰셋의 예시입니다.

from rest_framework import viewsets
from .models import Profile
from .serializers import ProfileSerializer

class ProfileViewSet(viewsets.ModelViewSet):
    queryset = Profile.objects.all()
    serializer_class = ProfileSerializer

위의 코드에서 ModelViewSet은 CRUD(Create, Retrieve, Update, Delete) 기능을 제공하는 뷰셋을 정의하는 클래스입니다. queryset은 뷰셋이 사용할 모델 쿼리셋을 지정하고, serializer_class는 사용할 시리얼라이저를 지정합니다.

URL 패턴 등록

마지막으로, 뷰셋을 URL 패턴에 등록해야 합니다. Django의 urls.py 파일을 열고 아래와 같이 URL 패턴을 등록해주십시오.

from django.urls import include, path
from rest_framework import routers
from .views import ProfileViewSet

router = routers.DefaultRouter()
router.register(r'profiles', ProfileViewSet)

urlpatterns = [
    path('', include(router.urls)),
]

위의 코드에서 router.register() 메서드를 사용하여 프로필 뷰셋을 URL 패턴에 등록합니다. 이제 /profiles/로 시작하는 URL을 통해 프로필을 생성, 조회, 수정, 삭제할 수 있습니다.

마무리

이제 Django REST framework를 사용하여 사용자 프로필 기능을 처리하는 방법에 대해 알아보았습니다. 프로필 모델, 시리얼라이저, 뷰셋, URL 패턴을 작성하여 웹 API에서 사용자 프로필을 관리할 수 있습니다. Django REST framework에 대해 더 자세한 내용을 알고 싶다면 공식 문서를 참조하시기 바랍니다.