【问题标题】:python ternary in jinja2 gives TemplateSyntaxError: tag name expectedjinja2 中的 python 三元组给出 TemplateSyntaxError: tag name expected
【发布时间】:2016-03-10 11:06:04
【问题描述】:

我有一张桌子,如果 person.storyPublished 的值为 true,我想更改 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>

为什么会这样?我想念什么我没有注意到?任何帮助:)

【问题讨论】:

    标签: python css python-2.7 jinja2


    【解决方案1】:

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

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

    【讨论】:

    • 哇,这行得通,我不知道像 if else 可以与双括号一起使用的 python 表达式。你知道它是否只适用于 Jinja 吗?还是姜戈?谢谢+1
    • 对不起,我用的是flask,所以我只能说它适用于jinja。但是为什么这在 Django 中会有所不同呢? Django 不使用纯 jinja 吗?
    • 没有 Django 有自己的模板语言,它和 Jinja 一样但有区别。
    • 谢谢你,除了我必须删除 CSS 类中的点
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-03-28
      • 2020-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多