【问题标题】:jinja2: TemplateSyntaxError: expected token ',', got 'string'jinja2:TemplateSyntaxError:预期的令牌',',得到'字符串'
【发布时间】:2015-07-18 00:28:22
【问题描述】:

我是 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'

【问题讨论】:

    标签: python templates jinja2


    【解决方案1】:

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

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

    将此行替换为

    {% if "Error" in l %}
    

    可以解决您的问题。

    如果你的逻辑条件比较复杂,你应该考虑定义你自己的custom filters(可以调用任何python代码)或者在你的视图层做复杂的事情。也去看看global namespace

    【讨论】:

      猜你喜欢
      • 2015-02-26
      • 2022-09-22
      • 1970-01-01
      • 1970-01-01
      • 2018-12-04
      • 2013-03-27
      • 1970-01-01
      • 1970-01-01
      • 2020-06-05
      相关资源
      最近更新 更多