본문 바로가기

BackEnd/DRF

ImageField 사용 방법(Upload Image)

반응형


Django Rest Framework

 

ImageField를 사용하는 방법에 대해서 알아보도록 하겠습니다.

목차

1. Models.py
2. Settings.py
3. Urls.py
4. Serializers.py
5. POSTMAN으로 전송


1. Models.py

모델에 ImageField를 만듭니다.

brand_logo = models.ImageField(default='media/Ryan.png', upload_to="%Y/%m/%d")

default : brand_logo를 설정하지 않으면 기본으로 업로드 되어 있는 파일을 사용합니다.
upload_to : 이미지를 업로드 할 때 저장되는 경로를 지정합니다. "%Y/%m/%d" 의 경우 현재 날짜를 사용합니다.

 


2. Settings.py

프로젝트의 settings.py 파일 하단에 MEDIA와 관련된 것들을 설정합니다.

# MEDIA FILE의 경로 설정 - Upload된 파일들이 저장되는 위치를 지정
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

# 절대 경로로 이미지로 접근
# http://http://127.0.0.1:8000/media/2022/01/13/apeach.jpg
MEDIA_URL = '/media/'

 


3. Urls.py

MEDIA_URL 요청이 왔을 때, MEDIA_ROOT에서 일을 처리하기 위해 프로젝트의 urls.py 파일에 설정을 추가합니다.
위치는 어디든 상관없습니다만 저는 관리하기 쉽도록 프로젝트의 urls.py 파일에 설정했습니다.

from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
   . . .
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

 


4. Serializers.py

serializers.py 에서 입력받아 다른 용도로 사용하고자 한다면 아래와 같이 설정하시면 됩니다.

brand_logo = serializers.ImageField(use_url=True)

 


5. POSTMAN으로 전송

POSTMAN으로 이미지파일을 전송해보도록 하겠습니다.

REQUEST를 만들고, 전송하는 방법에 대해서는 따로 정리된 아래 게시글들을 확인하시기 바랍니다.


https://axce.tistory.com/101

 

[# DRF Project] Postman 사용 방법 - 1

POSTMAN DRF Project를 하면서 Postman을 처음 사용해보았습니다. Postman은 API를 구축하고 사용하기 위한 API 플랫폼입니다. DRF에서는 Postman을 client가 request를 어떤 형태로 보내야하고 서버에서 response..

axce.tistory.com

https://axce.tistory.com/107

 

[# DRF Project] Postman 사용 방법 - 2

POSTMAN 지난 글에 이어서 POSTMAN의 간단한 사용법에 대해서 알아보도록 하겠습니다. [# DRF Project] Postman 사용 방법 - 1 POSTMAN DRF Project를 하면서 Postman을 처음 사용해보았습니다. Postman은 API를..

axce.tistory.com

 

전 patch 요청으로 전송해보도록 하겠습니다. 아래 명령어로 Django를 실행시켜줍니다.

python manage.py runserver

 

PATCH URL 설정

PATCH 요청을 보낼 URL

Body > form-data 설정

Body > form-data 설정

File 형식으로 변경

File을 보내기 위해 File형식으로 변경

아마 처음 POSTMAN을 하시는 분들은 아래와 File로 보낼 때 아래와 같은 Message가 뜨면서 안보내지는 경우가 있을 수 있습니다.

그때는 "ctrl + ," 혹은 file > settings 로 들어가서 working directory 설정을 바꿔주어야 합니다. settings 창이 열리면 가장 아래에 Location 부분에서 ON&OFF 부분을 ON으로 해주시면 됩니다. 이것은 지정 Directory 바깥에 있는 파일들도 사용할 수 있도록 합니다.

ON

아래와 같이 KEY 값과 VALUE 값을 설정합니다. KEY 값은 수정할 ImageField의 이름입니다. Select Files를 눌러 바탕화면에 있는 NEO.png 파일을 선택해줍니다.

설정 전
설정 후

그 다음 Send 버튼을 눌러 Django 서버쪽에서 확인해보겠습니다.

POSTMAN 응답
장고 서버

이제 해당 주소로 접속하게 되면 아래와 같은 화면이 뜨게 됩니다.

 

ImageField에 관한 글은 여기서 마치도록 하겠습니다. 궁금한 사항이 있으시면 댓글 달아주세요 !

 

 


 

 

반응형