📌 Django ImageField 완전 정리 - 이미지 업로드 기능 구현 가이드
🖼️ ImageField란?
ImageField는 Django 모델에서 이미지를 저장하기 위한 전용 필드 타입입니다. FileField를 상속하며, 이미지 파일인지 검증하는 기능이 추가된 형태입니다.
from django.db import models
class Photo(models.Model):
image = models.ImageField(upload_to='photos/')
속성 설명
upload_to | 업로드된 파일이 저장될 경로 (MEDIA_ROOT 기준) |
height_field, width_field | 이미지의 너비/높이를 저장할 필드 지정 가능 |
🧰 Pillow - 필수 이미지 처리 라이브러리
ImageField 사용 시 Pillow 라이브러리가 반드시 설치되어 있어야 합니다.
📦 설치
pip install Pillow
💡 역할
- 이미지 형식 검증 (JPG, PNG, GIF 등)
- 이미지 사이즈 확인 및 조절
- 포맷 변환, 썸네일 생성 등 다양한 이미지 관련 기능 제공
🧼 django-cleanup - 자동 삭제 도우미
이미지를 수정하거나 객체를 삭제할 때, 기존 이미지 파일이 디스크에 남는 문제가 있습니다.
django-cleanup 라이브러리를 사용하면 이를 자동으로 정리해줍니다.
📦 설치
pip install django-cleanup
🔧 설정
# settings.py
INSTALLED_APPS = [
...
'django_cleanup.apps.CleanupConfig',
]
✅ 객체 삭제 시 → 이미지 파일 자동 삭제
✅ ImageField 값 변경 시 → 이전 파일 자동 삭제
🗂️ MEDIA_ROOT & MEDIA_URL 설정
이미지 파일은 웹 서버에서 제공해야 하므로, 별도로 설정이 필요합니다.
# settings.py
import os
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# urls.py
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
...
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
설정 설명
MEDIA_ROOT | 실제 이미지 파일이 저장될 디렉토리 경로 |
MEDIA_URL | 브라우저에서 접근할 때 사용하는 URL 경로 |
✅ 정리 요약
항목 설명
ImageField | 이미지 업로드를 위한 모델 필드 |
Pillow | 이미지 처리를 위한 필수 라이브러리 (ImageField 필수) |
django-cleanup | 이미지 삭제 시 자동 파일 정리 기능 제공 |
MEDIA_ROOT | 서버에 이미지가 저장될 물리적 경로 |
MEDIA_URL | 웹에서 이미지 파일을 요청할 때 사용하는 URL |
ImageField는 Django에서 이미지 처리 기능을 구현하는 데 있어 핵심 요소입니다. Pillow와 django-cleanup을 함께 사용하면 훨씬 안정적이고 깔끔한 이미지 업로드 시스템을 구축할 수 있습니다 🧩
'기술블로그-Django편' 카테고리의 다른 글
📌 Django-extensions 완전 가이드 - 실전 개발을 위한 필수 도구 (0) | 2025.05.16 |
---|---|
📌 Django-summernote - WYSIWYG 에디터 통합 가이드 (0) | 2025.05.16 |
✅ Django ORM 필드 룩업 완전 정복: nickname__icontains vs tags__tag 차이 이해하기 (0) | 2025.05.16 |
✅ Django 검색 뷰 함수 완전 분석: search() 함수 흐름 이해하기 (0) | 2025.05.16 |
✅ Django symmetrical 옵션 완전 이해하기 (0) | 2025.05.16 |