jinja2: TemplateSyntaxError: expected token ',', got 'string'

jinja2: TemplateSyntaxError: expected token ',', got 'string'

我是 Jinja2 的新手,在使用 python 正则表达式 (re) 时遇到问题。在下面的代码中,我想将其中包含错误字符串的行加粗。

  {% block content %}
    <div class="container">
      {% for l in lines %}
         {% if re.search(r"Error", l) %}  {# <<< Throws error #}
            <b> {{ l }} </b>
         {% else %}
            {{ l }} <hr>
         {% endif %}
      {% endfor %}
    </div>
 {% endblock %}

上面的 re.search 抛出以下错误:

jinja2.exceptions.TemplateSyntaxError
TemplateSyntaxError: expected token ',', got 'string'

jinja2 模板语法不完全支持原始 python 代码。

{% if re.search(r"Error", l) %}

将此行替换为

{% if "Error" in l %}

可以解决您的问题。

如果你的逻辑条件比较复杂,你应该考虑自己定义custom filters(which can call any python code) or do the complicated things in your view layer. also go check global namespace