2014-04-01 2 views
1

Попытка изменить данные таблицы на основе условий.Строка состояния Tal содержит

<td tal:condition="string.stringname != '-shadow'"><strong>Stuff</strong></td> 
<td tal:condition="string.stringname == '-shadow'"><em>Stuff</em></td> 

string.stringname может иметь -shadow в самом конце строки, и она не может. Я пытаюсь получить tal для отображения табличных данных на основе того, является ли тот или другой истинным. На странице нужно будет отобразить оба случая, если, конечно, оба случая выполнены. tal:condition, похоже, не в состоянии выполнить поиск, если строка содержит что-то, только если что-то явно верно или false.

+1

Предположительно это с шаблонизатор хамелеон? –

+0

Да, действительно. Извинения я пропустил. – JeremyDavis

ответ

1

Используйте str.endswith(), чтобы проверить, если строка заканчивается с заданной подстроки:

<td tal:condition="not string.stringname.endswith('-shadow')"><strong>Stuff</strong></td> 
<td tal:condition="string.stringname.endswith('-shadow')"><em>Stuff</em></td> 
+0

Perfect. Именно то, что мне нужно. Мне любопытно, хотя это может возникнуть. Есть ли способ сделать это с текстом в середине строки? Я знаю, что python может с 'in', но я не думаю, что вы можете с этим шаблоном. Например, 'otherstring.stringname' может заканчиваться символами' -shadow1396378908', обозначающими временную метку unix. Невозможно узнать, что такое временная метка, но мне может понадобиться использовать «tal: condition» таким же образом, и это не закончится «-shadow». Мысли? – JeremyDavis

+0

Просто используйте 'in'; это выражения Python, поэтому просто используйте Python: '' -shadow 'не в string.stringname' и '' -shadow' в string.stringname' –

+0

Hm. Я пробовал это (или некоторые варианты), и он, похоже, не работал. Полагаю, если это возникнет, я буду играть с ним. Еще раз спасибо, я проработал полтора года. < – JeremyDavis