【问题标题】:Tal condition string containsTal 条件字符串包含
【发布时间】:2014-05-12 17:02:50
【问题描述】:

尝试根据条件更改表数据。

<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 似乎无法搜索字符串是否包含某些内容,除非某些内容明确为真或假。

【问题讨论】:

  • 想必这是Chameleon模板引擎的问题?
  • 确实如此。很抱歉我错过了这个标签。

标签: pyramid template-tal chameleon


【解决方案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>

【讨论】:

  • 完美。正是我需要的。不过我很好奇,这可能会出现。有没有办法用字符串中间的文本来做到这一点?我知道 python 可以用in,但我不相信你可以用这个模板。例如,otherstring.stringname 可能以 -shadow1396378908 结尾,这些数字表示 unix 时间戳。无法知道时间戳是什么,但我可能需要以同样的方式使用tal:condition,并且不会以-shadow 结尾。想法?
  • 只要使用in;这些是 Python 表达式,所以只需使用 Python:'-shadow' not in string.stringname'-shadow' in string.stringname
  • 嗯。我试过了(或一些变化),但它似乎没有用。我想如果它出现,我会玩弄它。再次感谢,我在谷歌上搜索了一个半小时>。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-12
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 2016-08-23
相关资源
最近更新 更多