python ternary in jinja2 gives TemplateSyntaxError: tag name expected

python ternary in jinja2 gives TemplateSyntaxError: tag name expected

我有一个 table,如果 person.storyPublished 的值为真,我想更改 tr 的背景颜色,否则什么也不做。

我的代码如下所示:

 {% for person in people %}
    <tr class="row-person {% '.row-story-published' if  person.storyPublished  else ' ' %}" >
    <td>
    {{ person.name }}
    </td>
    ...

我收到这个错误:

jinja2.exceptions.TemplateSyntaxError
TemplateSyntaxError: tag name expected

CSS 部分在这里:

<style>
    .row-story-published{
        background-color: #b3ffb3;
    }
</style>

为什么会这样?我错过了什么我没有注意到?任何帮助:)

您使用了“{% %}”,它想要获得一个标签,如 if、endif 等。 如果你只想执行一段 python 代码,比如你的三元表达式,你应该像这样使用双括号

{{ 'row-story-published' if  person.storyPublished  else ' ' }}

模板语言不同于Python,因此具有不同的语法。您不能在模板中使用 Python 的惯用语法。

<tr class="row-person {% if  person.storyPublished %} row-story-published {% endif %}" >