0
我已經(最終)從Django 1.8升級到Django 1.10,雖然存在一些明顯的挑戰,唯一的困難是我的圖像上傳到S3。在升級Django的同時,我也被迫升級Boto & PIL。Django將圖像上傳到AWS S3升級到Django後無法正常工作1.10
雖然原始圖像仍然會正確上傳到請求的存儲桶(原件),但是,創建拇指並將其保存到另一個存儲桶的保存功能不再有效。
這裏是我的代碼是否正確工作,直到Django的/博託/ PIL升級:
class Photo(models.Model):
...
def save(self, *args, **kwargs):
super(Photo, self).save(*args, **kwargs)
self.create_avatar_thumb()
def create_avatar_thumb(self):
import os
from PIL import Image
from django.core.files.storage import default_storage as storage
if not self.filename:
return ""
file_path = self.filename.name
filename_base, filename_ext = os.path.splitext(file_path)
original_file_path = "%s%s" % (filename_base, filename_ext)
xm_file_path = original_file_path.replace('originals/', 'xm/')
if storage.exists(xm_file_path):
return "exists"
# resize the original image to xs
f = storage.open(file_path, 'r')
image = Image.open(f)
print image # example 1
xm_size = 40, 40
image.thumbnail(xm_size, Image.ANTIALIAS)
f_thumb = storage.open(xm_file_path, "w")
print f_thumb # example 2
image.save(f_thumb, quality=100)
f_thumb.close()
我的測試:
我得到運行此腳本沒有錯誤。
兩個意見:當我運行print
的#示例1將打印兩次,print
上#示例2是空
感謝您的回覆。我一定會試一試。事實上,使用Django 1.8,枕頭4.0可以正常工作。 django-storage在版本1.1.8和1.2.0之間發生了一些變化。因爲當我使用比django-storage 1.8更新的東西時,上傳不再適用於Django 1.8 ..當我使用django-1.8與django 1.10時,我得到'get_available_name()得到了一個意外的關鍵字參數'max_length'因爲它位於django-storage包中,所以無法覆蓋。 – WayBehind