在我的項目中,我有一個使用Imagekit處理圖像的模型。當我保存圖像我有以下要求:Imagekit - 刪除原始文件後未刪除的圖像
- 重命名圖像和縮略圖爲唯一的名稱
- 當一個新的圖像加載時,老人們應該被移除(並且在緩存縮略圖應該刷新新圖像)。
爲了實現這一點,我使用以下代碼:
模型:
def generate_cache_filename(instance, path, specname, extension):
extension = '.jpg'
return 'cache/images_upload/%s_%s%s' % (instance.pk, specname, extension)
def generate_image_filename_1(instance, filename):
filename = '1'
extension = '.jpg'
return 'images_upload/%s_%s%s' % (instance.pk, filename, extension)
class Model(models.Model):
name = models.CharField(max_length=40)
image_1 = ProcessedImageField([Adjust(contrast=1.2, sharpness=1.1), ResizeToFill(500, 370)], upload_to=generate_image_filename_1, format='JPEG', options={'quality': 90})
thumbnail_1 = ImageSpec([Adjust(contrast=1.2, sharpness=1.1), ResizeToFill(83, 78)], image_field='image_1', cache_to=generate_cache_filename, format='JPEG', options={'quality': 90})
形式(刪除的圖像當它被更換一個新):
if form.is_valid():
form_image = form.cleaned_data['image_1']
try:
details = Model.objects.get(pk=pk)
if details.image_1 != form_image:
details.image_1.delete(save=False)
except Model.DoesNotExist:
pass
form.save()
重命名圖像並替換image_1
(=加載新的和刪除舊的)的部分工作得很好。但由於某些原因,緩存中的thumbnail_1
不會刷新(=仍舊是舊圖像的縮略圖)。
我認爲它與表單中的刪除代碼有關,但我無法弄清楚爲什麼以及如何解決它。有人提出建議?
UPDATE 1:它也與'重命名'有關。我做了一些額外的測試:當我不重命名image_1
文件,那麼一切工作正常(也刷新縮略圖)。但是當我加載另一個具有相同名稱的圖像時,則出現同樣的問題:image_1
已更新,但thumbnail_1
仍舊是舊圖像的縮略圖。
更新2:做了一些更多的測試和使用相同的文件名上傳新圖片的時候,我肯定在try
進入if statement
。所以舊的圖像被刪除。根據Imagekit的文檔,縮略圖也應該被刪除。但這種情況並非如此。
非常感謝!
更新:做了一些更多的測試和使用相同的文件名上傳新圖片的時候,我肯定是在'try'進入'如果statement'。所以舊的圖像被刪除。根據Imagekit的文檔,縮略圖也應該被刪除。但這種情況並非如此。 –