2010-08-03 40 views
5

Tôi đang tạo trang web nơi tệp được tải lên thông qua quản trị viên và sau đó lưu trữ chúng trên Amazon S3. Tôi đang sử dụng django-storages và boto cho điều này, và nó có vẻ là làm việc tốt.Ở Django, làm thế nào để có được django-storages, boto và easy_thumbnail để làm việc độc đáo?

Thing là, tôi thường sử dụng easy_thumbnails của tôi (sorl.thumbnail mới) ở phía mẫu để tạo hình thu nhỏ khi đang di chuyển. Tôi thích cách tiếp cận này, hơn là phía mô hình, vì nó cho phép bảo trì dễ dàng hơn nếu tôi quyết định thay đổi kích thước hình thu nhỏ sau này, v.v ...

Nhưng tôi nhận ra rằng easy_thumbnails dường như không thích đọc hình ảnh hiện được lưu trữ trên Amazon S3. Ngoài ra, tôi nhận ra, chính xác nó sẽ đặt hình thu nhỏ khi nào được tạo ra? Rõ ràng, tôi cũng thích những thứ này trên Amazon S3. Nhưng làm thế nào để tôi có được hai công nghệ này để chơi đẹp?

Làm cách nào để nhận được easy_thumbnails để lưu ngón tay cái mà nó tạo lại trên Amazon S3? Hay tôi chỉ xem xét tất cả điều này sai?

Cảm ơn!

Trả lời

16

easy_thumbnails sẽ làm hình ảnh dựa trên S3 thu nhỏ cho bạn - bạn chỉ cần đặt settings.THUMBNAIL_DEFAULT_STORAGE, để easy_thumbnails biết lưu trữ nào cần sử dụng (trong trường hợp của bạn, bạn có thể đặt nó vào cùng một bộ nhớ bạn đang sử dụng các ImageField của bạn).

+0

Cảm ơn vì điều này, bạn đã tiết kiệm cho tôi rất nhiều thời gian – ajt

+1

Vì tình yêu của tất cả những điều đó là tốt và tinh khiết, tại sao đây không phải là câu trả lời được chấp nhận? Cảm ơn bạn! –

-1

tôi đã thay đổi như thế nào tôi sử dụng nó ...

tôi sửa đổi mô hình của tôi để có một lĩnh vực cho hình thu nhỏ:

class Photo(models.Model) 
    image = models.ImageField(upload_to=image_upload_to) 
    thumb_a = ThumbnailerImageField(upload_to=thumb_a_upload_to, resize_source=dict(size=(98,98), crop='center'),) 

và trên mẫu, thay vì:

{% load thumbnail %} 
<img src="{% thumbnail photo.image 98x98 crop='center' %}"> 

Tôi đã thay đổi thành ...

<img src="{{photo.thumb_b.url}}"> 

Khi tôi tải ảnh lên, tôi hiện ...

for i in listOfImages: 
    form = CreatePhotoForm(request.POST, i) 
     if form.is_valid(): 
      asdf = form.save(commit=False) 
      asdf.owner = request.user 
      asdf.image = i 
      asdf.thumb_a = i 
      asdf.title = str(i) 
      asdf.save() 

Nó hoạt động khá tốt.

+1

Bạn đã bỏ lỡ lý do tại sao nó không hoạt động theo cách cần thiết. –

Các vấn đề liên quan