Хамелеон шаблоны ZPT

Я создал шаблон .pt, содержащий следующий фрагмент

<span class="help-block">
   ${password_confirm}
</span>

Моя проблема в том, что поле password_confirm не всегда будет отображаться структурой пирамиды, поэтому оно отображает ошибку ниже

chameleon.utils.NameError

NameError: password_confirm

Я понимаю, что должен использовать tal:condition, но все, что я пытаюсь сделать, терпит неудачу. Может ли кто-нибудь помочь мне в том, как я должен работать с переменными, которые не всегда будут отображаться в шаблоне.


person Madawar    schedule 13.01.2012    source источник


Ответы (2)


<span class="help-block" tal:condition="exists:password_confirm">
   ${password_confirm}
</span>

должно сработать

person Ottavio Campana    schedule 31.01.2012

Может быть, вы можете добавить tal:on-error="nothing" в тег span. Затем, если произойдет ошибка, весь диапазон не будет отображаться.

<span class="help-block" tal:on-error="nothing">
   ${password_confirm}
</span>

Вы можете использовать что-то другое вместо ничего.

ОБНОВЛЕНИЕ: этот подход обычно не рекомендуется, но в некоторых случаях может быть полезен как простейший.

ОБНОВЛЕНИЕ2: еще один вариант (не проверено Хамелеоном)

<span class="help-block" tal:condition="password_confirm|nothing">
   ${password_confirm}
</span>
person Roman Susi    schedule 13.01.2012
comment
это работает, но я искал что-то вроде tal:omit-tag=not:bold - person Madawar; 14.01.2012
comment
Не уверен, как в этом случае может работать omit-tag. Это просто означает, что ‹span› и ‹/span› будут опущены, но содержимое будет отображаться. - person Roman Susi; 15.01.2012