django-stdimageで元の画像を削除する[Django]
はじめに
django-stdimageは画像サイズを変更して保存してくれます.
画像サイズが大きいと読み込みに時間がかかるのでサイズ変更してくれるライブラリは便利です。
しかし,このdjango-stdimage...
元の画像も保存してしまうので無駄にデータの容量をとってしまう...
そこで,今回は画像サイズを変更し,元の画像を削除します。
インストール
sorl-thumbnailをインストールします。
$ pip install sorl-thumbnail
※django-stdimage のインストールもしておいてね
settings.py
#settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.sites',
'stdimage', #追加
'sorl.thumbnail', #追加
]
models.py
# models.py
from django.db import models
from stdimage.models import StdImageField
from sorl.thumbnail import delete
class Post(models.Model):
image=StdImageField(upload_to='image/',blank=True,variations={
'large': (600, 400),
'thumbnail': (100, 100, True),
'medium': (300, 200),
})
def save(self, *args, **kwargs):
super(Post, self).save(*args, **kwargs)
temp_img_name = self.image.name
try:
delete(temp_img_name) #ここで削除する!
except :pass
これで画像を保存するとオリジナルを除いたサイズが違う3つの画像が保存されています.
↑こちらの本は英語で書かれていますが,簡単な英語かつ分かりやすくソースコードが書かれているのでお勧めです。
カテゴリー

Djangoメモ
0件の記事





