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를 만들고, 전송하는 방법에 대해서는 따로 정리된 아래 게시글들을 확인하시기 바랍니다.
[# DRF Project] Postman 사용 방법 - 1
POSTMAN DRF Project를 하면서 Postman을 처음 사용해보았습니다. Postman은 API를 구축하고 사용하기 위한 API 플랫폼입니다. DRF에서는 Postman을 client가 request를 어떤 형태로 보내야하고 서버에서 response..
axce.tistory.com
[# 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 설정
Body > form-data 설정
File 형식으로 변경
아마 처음 POSTMAN을 하시는 분들은 아래와 File로 보낼 때 아래와 같은 Message가 뜨면서 안보내지는 경우가 있을 수 있습니다.
그때는 "ctrl + ," 혹은 file > settings 로 들어가서 working directory 설정을 바꿔주어야 합니다. settings 창이 열리면 가장 아래에 Location 부분에서 ON&OFF 부분을 ON으로 해주시면 됩니다. 이것은 지정 Directory 바깥에 있는 파일들도 사용할 수 있도록 합니다.
아래와 같이 KEY 값과 VALUE 값을 설정합니다. KEY 값은 수정할 ImageField의 이름입니다. Select Files를 눌러 바탕화면에 있는 NEO.png 파일을 선택해줍니다.
그 다음 Send 버튼을 눌러 Django 서버쪽에서 확인해보겠습니다.
이제 해당 주소로 접속하게 되면 아래와 같은 화면이 뜨게 됩니다.
ImageField에 관한 글은 여기서 마치도록 하겠습니다. 궁금한 사항이 있으시면 댓글 달아주세요 !
'BackEnd > DRF' 카테고리의 다른 글
DRF - 소셜 로그인 -2(Naver Login) (0) | 2022.07.06 |
---|---|
DRF - 소셜 로그인 - 1(Naver Login) (0) | 2022.06.30 |
DRF - 중첩데이터(nested data) 받는 방법(NestedSerializerMixin) (0) | 2022.01.12 |