TIL.14 Django-cleanup

Hoontae.KIM·2021년 10월 6일
0
post-thumbnail

이미지파일 자동 삭제

django 모델링 중 imagefield를 사용 할 일이 있어서 사용하던중 저장을 하기위해 설정한 경로에 이미지파일들이 삭제를 해도 변화가 되지 않아 업데이트시나 삭제시 자동으로 삭제가 되기위해서 코드를 작성하던중 구글링을 하여 찾은 좋은 djnago package가 있어서 기록하려고한다.

Imagefield 모델링 및 경로 설정

  • 모델링
class ImageFile(models.Model):
    maker = models.ForeignKey('Maker', on_delete=models.CASCADE)
    image = models.ImageField(upload_to='image', null=True, blank=True, default='default.jpg')

upload_to의 경우 아래 media의 경로 안에 새로운 image라는 디렉토리가 생성되며 그 안에 저장된다.
default를 설정한 경우 django-cleanup 패키지의 경우 기존의 이미지 파일이 변경되면 자동으로 삭제가 되기 때문에
default 이미지를 사용하는 경우는 설정을 해둬야 파일이 삭제가 되지않고 사용할 default 이미지파일의 경우 media 디렉토리 안에 저장해두면 된다.

  • settings.py에 추가
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
MEDIA_URL = '/media/'

*메인 urls.py에 추가

from django.urls import path,include
from django.conf import settings
from django.conf.urls.static import static

urlpatterns = [
    #path('images', include('images.urls')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

Django-cleanup

  • package install
    pip install django-cleanup

  • settings.py 추가

INSTALLED_APPS = (
    ...,
    'django_cleanup.apps.CleanupConfig',
)

위와 같은 간단한 방법으로 이미지파일을 자동으로 업데이트 및 삭제 할 수 있습니다.

더욱 자세한 사항은 아래에서 확인 할 수 있습니다.
https://pypi.org/project/django-cleanup/

profile
💻 STUDY RECORD

0개의 댓글