В Django, как заставить django-хранилища, boto и easy_thumbnail работать хорошо? - PullRequest
5 голосов
/ 03 августа 2010

Я создаю веб-сайт, где файлы загружаются через администратора, и затем они будут храниться в Amazon S3. Для этого я использую django-хранилища и boto, и, похоже, все работает нормально.

Дело в том, что я привык использовать мои easy_thumbnails (новый sorl.thumbnail) на стороне шаблона для создания миниатюр на лету. Я предпочитаю этот подход, а не сторону модели, поскольку он упрощает обслуживание, если я когда-нибудь решу изменить размер эскиза на более поздний срок и т. Д.

Но я понимаю, что easy_thumbnails не похоже на чтение изображения, теперь оно хранится в Amazon S3. Кроме того, я понял, где именно это будет помещать миниатюры, когда-то сделанные так или иначе? Очевидно, я бы предпочел, чтобы они были и на Amazon S3. Но как мне заставить эти две технологии играть хорошо?

Как мне получить easy_thumbnails для хранения большого пальца, который он создает, на Amazon S3? Или я просто смотрю на все это неправильно?!

Спасибо!

Ответы [ 2 ]

16 голосов
/ 10 марта 2011

easy_thumbnails сделает для вас миниатюру изображений на основе S3 - вам просто нужно установить settings.THUMBNAIL_DEFAULT_STORAGE, чтобы easy_thumbnails знал, какое хранилище использовать (в вашем случае вы, вероятно, захотите установить его на то же хранилище, которое используетедля ваших полей изображений).

0 голосов
/ 18 марта 2012

Я изменил, как я его использую ...

Я изменил свою модель, чтобы иметь поле для миниатюры:

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'),)

и на шаблоне, вместо:

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

Я изменил его на ...

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

Когда я загружаю фотографию, я теперь делаю ...

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()

Это работает довольно хорошо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...