py:选择字符串列表

时间:2014-11-04 17:16:35

标签: python templates cherrypy genshi

我试图在循环中使用select语句,我需要以这种方式填充表:

<tr py:for="i in range(0,25)">
     <py:choose my_list[i]='0'>
         <py:when my_list[i]='0'><td>NOT OK</td></py:when>
         <py:otherwise><td>OK</td></py:otherwise>
     </py:choose>
...
...
</tr>

我在第<py:choose...>行上有错误:

TemplateSyntaxError: not well-formed (invalid token): line...

但是我无法理解如何使用select语句! 如果我认为像C一样(在我看来更合乎逻辑)我只需要写:

<tr py:for="i in range(0,25)">
     <py:choose my_list[i]>
         <py:when my_list[i]='0'><td>NOT OK</td></py:when>
         <py:otherwise><td>OK</td></py:otherwise>
     </py:choose>
...
...
</tr>
你能帮帮我吗? 哦,my_list是一个字符串列表。然后,如果字符串是0,那么对我来说不行,其他一切都没问题。

1 个答案:

答案 0 :(得分:0)

py:choose内,您无法访问my_list的Ith项。相反,i设置为等于范围内的int。我认为这是一个人为的例子,您尝试访问Ith的{​​{1}}值。在这种情况下,您应该迭代my_list而不是使用my_list

以下是使用您当前方法论的示例。错误在range内:

py:choose

但是,您应该将from genshi.template import MarkupTemplate template_text = """ <html xmlns:py="http://genshi.edgewall.org/" > <tr py:for="index in range(0, 25)"> <py:choose test="index"> <py:when index="0"><td>${index} is NOT OK</td></py:when> <py:otherwise><td>${index} is OK</td></py:otherwise> </py:choose> </tr> </html> """ tmpl = MarkupTemplate(template_text) stream = tmpl.generate() print(stream.render('xhtml')) 更改为list_of_ints,然后直接对其进行迭代。 甚至更好,如果您必须知道my_list中每个项目的索引,请使用my_list

enumerate

当然,这些示例是从python解释器运行的。您可以修改此设置以轻松使用您的设置。

HTH