Форум сайта python.su
Есть некий класс, содержащий картинку в атрибуте image
class ISection(IContainer):
image = Bytes(
title=u“”,
default=None,
required=False)
Для отображения картинки в шаблоне используется следующая схема:
Директива zcml регистрирует вид для отображения непосредственно картинки:
<browser:page
for=“intershop.shopcatalog.interfaces.ISection”
name=“getImage”
permission=“zope.Public”
class=“.section.getImage”
/>
Класс вида:
class getImage():
def __call__(self):
return self.context.image
В шаблоне в теге img в качестве атрибута src устанавливается ссылка на вид, возвращающий картинку:
<img tal:attributes=“src string:${context/@@absolute_url}/@@getImage”>
———————
Проблема: если имеется несколько картинок у одного объекта, то для получения каждой приходится писать новый вид.
Вопрос: есть другое решение отображения картинки?
К примеру, можно ли как-то в качестве src передавать путь к методу, чтобы браузер по нему получал картинку? Например, в таком виде:
<img tal:attributes=“src string:${context/@@absolute_url}/@@SomeView/getImage1”>
Про наследование полей от объекта Image просьба не писать.
P.S. Подозреваю, что можно как-то передавать параметры классу вида для реализации ветвления примерно такого вида:
class getImage():
def __call__(self, imagefield):
return self.context
Отредактировано (Сен. 18, 2010 12:50:01)
Офлайн
LightOfMooNЕсли много картинок - имеет смысл сделать из объекта контейнер, в который все эти картинки добавлять.
Проблема: если имеется несколько картинок у одного объекта, то для получения каждой приходится писать новый вид.
Офлайн
не много
к примеру, поле Image - полная картинка, и Image_small - уменьшенная автосгенерированная
Офлайн
Можно организовать траверсинг по атрибуту
Офлайн
а параметр никак не передать?
Офлайн
LightOfMooNПо атрибуту получаете объект, к объекту применяете вид, а там уж передаете любые параметры Get запроса, какие заблагорассудится. Можете пойти дальше и делать еще траверсинг по виду.
а параметр никак не передать?
Офлайн