Галерея изображений Fancybox + Blobstore - PullRequest
0 голосов
/ 08 сентября 2011

Для извлечения изображения из blobstore я обычно делаю следующее, и это работает:

<img src="/image?blob_key={{ blob_key }}"></img>

Насколько я читал о fancybox и лично пробовал:

$("a[rel=photo_collections]").fancybox({
'transitionIn'      : 'none',
'transitionOut'     : 'none',
});

<a rel="photo_collections" href="/image/photo.png"> Photos </a>
<a rel="photo_collections" href="/image/photo2.png"> Photos </a>

Приведенная выше галерея изображений работает, если у меня есть изображения в папке.

Итак, мой вопрос: что если я хочу получить изображения из Blobstore, а не из папки?

Итак, я попробовал следующее, это не работает:

$("a[rel=photo_collections]").fancybox({
'transitionIn'      : 'none',
'transitionOut'     : 'none',
});

<a rel="photo_collections" href="/image/photo.png"> Photos </a>
<a rel="photo_collections" href="/image/photo2.png"> Photos </a>

// This part, the fancybox works but it doesn't display the image correctly. All it shows were some sort of binary data instead of image
<a rel="photo_collections" href="/image?blob_key={{ blob_key }}"            

Следовательно, у меня есть два основных вопроса:

  1. Как решить вышеупомянутую проблему?
  2. Если я хочу сделать что-то вроде Google Plus / Facebook Photo Viewer, где при просмотре изображений пользователь может оставлять комментарии. Требуется ли для этого галерея изображений HTML, а не просто галерея изображений, поскольку мне нужно больше элементов управления формой HTML?

EDIT

Ниже приведен обработчик для обслуживания изображения, полученного из Blobstore:

class RemoteDisplayImageHandler(blobstore_handlers.BlobstoreDownloadHandler):
    def get(self):

    blob_key = self.request.GET.get('blob_key', None)
    blob_info = blobstore.BlobInfo.get(blob_key)

    logging.debug('blob_key=%s', blob_key)
    logging.debug('blob_info=%s', blob_info)

    if not blob_info:
        raise Exception('Blob Key does not exist')

    self.send_blob(blob_info)

Ответы [ 2 ]

1 голос
/ 09 сентября 2011

Похоже, ваш обработчик изображений возвращает неправильный тип контента.Убедитесь, что в ответе правильно указан заголовок Content-Type.

0 голосов
/ 19 октября 2011

Решено с использованием альтернативы:

            options.push({
                    'href'  : 'image_url',
                    'class' : 'iframe'
                });

            $.fancybox(options, {
                'padding'           : 0,
                'transitionIn'      : 'none',
                'transitionOut'     : 'none',
                'type'              : 'image',
                'changeFade'        : 0
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...