Что вызывает синтаксическую ошибку шаблона Genshi? - PullRequest
0 голосов
/ 01 мая 2009

Шаблон Генши выдает следующую ошибку:

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 ]

4 голосов
/ 21 июня 2009

Возможно, что документы не проясняют это, но атрибут должен называться 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>
0 голосов
/ 01 мая 2009

Я никогда не использовал 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>
...