我试图在循环中使用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
,那么对我来说不行,其他一切都没问题。
答案 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