[python] Django REST framework에서의 이미지 업로드 처리 방법

Django REST framework은 이미지 업로드를 간단하게 처리할 수 있는 다양한 방법과 기능을 제공합니다. 이번 블로그 포스트에서는 Django REST framework에서 이미지를 업로드하는 방법에 대해 알아보겠습니다.

1. 필요한 패키지 설치

Django REST framework를 사용하여 이미지 업로드를 처리하기 위해 Pillow 패키지를 설치해야 합니다. Pillow는 이미지 처리를 위한 파이썬 패키지입니다. 다음 명령을 사용하여 Pillow를 설치합니다.

pip install pillow

2. 모델 설정

이미지를 업로드하기 위해서는 해당 이미지를 저장할 모델을 만들어야 합니다. 예를 들어, 사용자 프로필 이미지를 업로드하는 User 모델을 생성한다고 가정해보겠습니다.

from django.db import models

class User(models.Model):
    username = models.CharField(max_length=50)
    profile_image = models.ImageField(upload_to='profiles/')

ImageField는 업로드된 이미지 파일을 저장하는 필드입니다. upload_to 파라미터는 이미지 파일이 저장될 경로를 지정합니다.

3. 시리얼라이저 설정

이미지를 업로드할 때는 시리얼라이저를 사용하여 해당 이미지를 업로드하는 기능을 구현해야 합니다. 시리얼라이저는 JSON 형태의 데이터를 파이썬 객체로 변환해주는 역할을 합니다.

from rest_framework import serializers

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['username', 'profile_image']

UserSerializer 클래스를 정의하고, fields에 필요한 필드를 지정합니다. 이때 이미지를 업로드할 필드도 포함시켜야 합니다.

4. 뷰 설정

이미지를 업로드하기 위해서는 뷰에서 해당 이미지 파일을 받아와서 저장해야 합니다. APIView 클래스를 상속받아서 뷰를 만들어보겠습니다.

from rest_framework.views import APIView
from rest_framework.parsers import MultiPartParser, FormParser
from rest_framework.response import Response

class UserImageView(APIView):
    parser_classes = [MultiPartParser, FormParser]

    def post(self, request):
        serializer = UserSerializer(data=request.data)

        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=201)

        return Response(serializer.errors, status=400)

parser_classesMultiPartParserFormParser를 추가하여 요청 데이터를 파싱할 수 있도록 설정합니다. post 메서드에서는 시리얼라이저를 사용하여 데이터를 검증하고, 유효한 경우 이미지를 저장합니다.

5. URL 설정

마지막으로 URL을 설정하여 이미지 업로드 기능을 사용할 수 있도록 합니다.

from django.urls import path
from .views import UserImageView

urlpatterns = [
    path('image/upload/', UserImageView.as_view()),
]

UserImageView를 import하고, 해당 URL을 설정합니다.

이제 Django REST framework에서 이미지 업로드를 간단하게 처리하는 방법을 알아봤습니다. Pillow 패키지를 설치하고 모델, 시리얼라이저, 뷰, URL을 설정하면 이미지 업로드 기능을 쉽게 구현할 수 있습니다.

이 외에도 Django REST framework는 다양한 이미지 처리 기능과 설정 옵션을 제공하므로, 필요한 경우 공식 문서를 참고하시기 바랍니다.

참고 자료