django 모델링 중 imagefield를 사용 할 일이 있어서 사용하던중 저장을 하기위해 설정한 경로에 이미지파일들이 삭제를 해도 변화가 되지 않아 업데이트시나 삭제시 자동으로 삭제가 되기위해서 코드를 작성하던중 구글링을 하여 찾은 좋은 djnago package가 있어서 기록하려고한다.
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
디렉토리 안에 저장해두면 된다.
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)
package install
pip install django-cleanup
settings.py 추가
INSTALLED_APPS = (
...,
'django_cleanup.apps.CleanupConfig',
)
위와 같은 간단한 방법으로 이미지파일을 자동으로 업데이트 및 삭제 할 수 있습니다.
더욱 자세한 사항은 아래에서 확인 할 수 있습니다.
https://pypi.org/project/django-cleanup/