Строка условия 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, похоже, не может искать, содержит ли строка что-то, только если что-то явно истинно или ложно.


person Jer_TX    schedule 01.04.2014    source источник
comment
Предположительно это с шаблонизатором Chameleon?   -  person Martijn Pieters    schedule 01.04.2014
comment
Да, в самом деле. Извините, я пропустил этикетку.   -  person Jer_TX    schedule 01.04.2014


Ответы (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>
person Martijn Pieters    schedule 01.04.2014
comment
Идеально. Именно то, что мне было нужно. Мне любопытно, хотя, и это может подойти. Есть ли способ сделать это с текстом в середине строки? Я знаю, что Python может с in, но я не верю, что вы можете с этим шаблоном. Например, otherstring.stringname может заканчиваться -shadow1396378908 числами, обозначающими метку времени unix. Невозможно узнать, что такое метка времени, но мне может понадобиться использовать tal:condition таким же образом, и это не закончится на -shadow. Мысли? - person Jer_TX; 01.04.2014
comment
Просто используйте in; это выражения Python, поэтому просто используйте Python: '-shadow' not in string.stringname и '-shadow' in string.stringname - person Martijn Pieters; 01.04.2014
comment
Хм. Я пробовал это (или какой-то другой вариант), и это, похоже, не сработало. Я полагаю, если он возникнет, я поиграюсь с ним. Еще раз спасибо, я гуглил добрых полтора часа ›.‹ - person Jer_TX; 01.04.2014