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/')
위의 코드에서 OneToOneField
는 User
모델과의 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에 대해 더 자세한 내용을 알고 싶다면 공식 문서를 참조하시기 바랍니다.