是什么导致Genshi的模板语法错误?

时间:2009-05-01 14:55:33

标签: python syntax-error genshi

Genshi模板引发以下错误:

  

TemplateSyntaxError:"${item.error}"指令

的表达式"choose"中的语法无效

错误指定的模板代码部分如下('feed'是传递给模板的字典列表):

<item py:for="item in feed">
<py:choose error="${item.error}">
    <py:when error="0">
        <title>${item.something}</title>
    </py:when>
    <py:otherwise>
        <title>${item.something}</title>
    </py:otherwise>
</py:choose>
</item>

基本上,item.error包含'0''1',我希望输出基于此。我不确定错误在哪里 - 任何帮助表示赞赏。感谢。

2 个答案:

答案 0 :(得分:4)

docs可能没有明确说明,但属性需要调用test(就像在他们的示例中一样)而不是error

<item py:for="item in feed">
<py:choose test="item.error">
    <py:when test="0">
        <title>${item.something}</title>
    </py:when>
    <py:otherwise>
        <title>${item.something}</title>
    </py:otherwise>
</py:choose>
</item>

答案 1 :(得分:0)

我从未使用过Genshi,但根据我发现的文档,看起来你正试图在模板指令参数中使用内联Python表达式语法,这似乎是不必要的。试试这个:

<item py:for="item in feed">
<py:choose error="item.error">
    <py:when error="0">
        <title>${item.something}</title>
    </py:when>
    <py:otherwise>
        <title>${item.something}</title>
    </py:otherwise>
</py:choose>
</item>