|
Вопрос: Я точно знаю, что id объекта = XXX, но сравнение <dtml-if "id == 'XXX'"> выдает false. В чем дело?
Ответ: Проблема заключается в том, что иногда id не строка, а функция, которую еще надо вызвать. То есть в Вашем случае это будет <dtml-if "id() == 'XXX'">.
Для того, чтобы не разбираться каждый раз отдельно, является ли id строкой или функцией, Вы можете
заставить Zope выдавать строку или вызывать функцию: <dtml-if "_['id'] == 'XXX'">.
Конструкция _['id'] автоматически рендерит объект, имя которого передано (в даном случае id). Это эквивалентно
_.getitem('id', 1). Примечание. _.getitem('id', 0) вернет сам объект, без его насильственного вызова.
Примечание 2. В Zope 2.3 будет введен интерфейс getId().
|