2011-01-21 3 views

ответ

2

В в этом случае blob - это изображение, которое отлично. Просто используйте images.get_serving_url(blob_key), и вы счастливы. Я использовал эту функцию и доверяю мне, это потрясающе для обслуживания изображений. Просто добавьте =sxx к URL-адресу, где xx - размер пикселя, который вы хотите. Он автоматически изменяет размер изображения и обслуживает его.

Если капля не изображение, то вам не повезло w.r.t легкий выход. Может быть, используйте BlobReader, чтобы сделать строковое представление и вывести его?

Если это не изображение или текст, что вы можете захотеть написать в HTML?

+0

Как это возвращается от обработчика? Изображение будет повреждено, если я верну URL-адрес обслуживания или URL-адрес, завернутый в ответ. Если я жестко задаю «/ _ah/img/» в атрибуте src, он работает, но только при разработке. –

+0

Что вы хотите вернуть из обработчика? Вы можете отправить это обратно как JSON или сделать шаблон. Если вы используете этот обработчик для обслуживания самого изображения, просто отправьте перенаправление на URL-адрес изображения. –

+0

Обслуживание изображения отлично работает, но попытка вернуть сгенерированный URL-адрес и поместить его в атрибут src не работает. Я закончил использовать код моего обработчика, чтобы написать простой фильтр Jinja, который отлично работал. Спасибо за вашу помощь! –

1

Существует не встроенный тег шаблона для отображения таких произвольных данных. Я могу думать о двух подходах:

  1. Напишите обработчик запроса для обслуживания аватаров в качестве изображений. На основе вашего примера обработчик запросов просто должен найти приветствие, чтобы получить данные изображения, отправить соответствующий заголовок Content-Type: image/jpeg (или image/png или что-то еще), а затем записать данные блоба в поток ответов.

    Затем, в шаблоне, вы бы отобразить изображение, как это:

    <img src="/show-avatar/{{ greeting.key().id() }}"> 
    
  2. Написать пользовательский шаблон тег/шаблон фильтра, который принимает данные больших двоичных объектов и генерирует соответствующий ему уровень data URL, который будет кодировать изображения непосредственно в документе HTML, который вы создаете.

    Затем, в шаблоне, вы бы отобразить изображение что-то вроде этого:

    <img src="{{ greeting.avatar|dataurl }}"> 
    

    , который приведет к выходу вдоль этих линий в шаблоне:

    <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IAAAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1JREFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jqch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0vr4MkhoXe0rZigAAAABJRU5ErkJggg==" /> 
    
Смежные вопросы