Учитывая на GAE, используя tipfy (питон) следующую модель:Tipfy: Как отображать blob в шаблоне?
greeting.avatar = db.Blob(avatar)
Что такое шаблон-теги для отображения блобы (здесь изображения)?
Учитывая на GAE, используя tipfy (питон) следующую модель:Tipfy: Как отображать blob в шаблоне?
greeting.avatar = db.Blob(avatar)
Что такое шаблон-теги для отображения блобы (здесь изображения)?
В в этом случае blob - это изображение, которое отлично. Просто используйте images.get_serving_url(blob_key)
, и вы счастливы. Я использовал эту функцию и доверяю мне, это потрясающе для обслуживания изображений. Просто добавьте =sxx
к URL-адресу, где xx
- размер пикселя, который вы хотите. Он автоматически изменяет размер изображения и обслуживает его.
Если капля не изображение, то вам не повезло w.r.t легкий выход. Может быть, используйте BlobReader
, чтобы сделать строковое представление и вывести его?
Если это не изображение или текст, что вы можете захотеть написать в HTML?
Существует не встроенный тег шаблона для отображения таких произвольных данных. Я могу думать о двух подходах:
Напишите обработчик запроса для обслуживания аватаров в качестве изображений. На основе вашего примера обработчик запросов просто должен найти приветствие, чтобы получить данные изображения, отправить соответствующий заголовок Content-Type: image/jpeg
(или image/png
или что-то еще), а затем записать данные блоба в поток ответов.
Затем, в шаблоне, вы бы отобразить изображение, как это:
<img src="/show-avatar/{{ greeting.key().id() }}">
Написать пользовательский шаблон тег/шаблон фильтра, который принимает данные больших двоичных объектов и генерирует соответствующий ему уровень data URL, который будет кодировать изображения непосредственно в документе HTML, который вы создаете.
Затем, в шаблоне, вы бы отобразить изображение что-то вроде этого:
<img src="{{ greeting.avatar|dataurl }}">
, который приведет к выходу вдоль этих линий в шаблоне:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9YGARc5KB0XV+IAAAAddEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIFRoZSBHSU1Q72QlbgAAAF1JREFUGNO9zL0NglAAxPEfdLTs4BZM4DIO4C7OwQg2JoQ9LE1exdlYvBBeZ7jqch9//q1uH4TLzw4d6+ErXMMcXuHWxId3KOETnnXXV6MJpcq2MLaI97CER3N0vr4MkhoXe0rZigAAAABJRU5ErkJggg==" />
Как это возвращается от обработчика? Изображение будет повреждено, если я верну URL-адрес обслуживания или URL-адрес, завернутый в ответ. Если я жестко задаю «/ _ah/img/» в атрибуте src, он работает, но только при разработке. –
Что вы хотите вернуть из обработчика? Вы можете отправить это обратно как JSON или сделать шаблон. Если вы используете этот обработчик для обслуживания самого изображения, просто отправьте перенаправление на URL-адрес изображения. –
Обслуживание изображения отлично работает, но попытка вернуть сгенерированный URL-адрес и поместить его в атрибут src не работает. Я закончил использовать код моего обработчика, чтобы написать простой фильтр Jinja, который отлично работал. Спасибо за вашу помощь! –