我是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'
答案 0 :(得分:7)
jinja2模板语法不完全支持Raw python代码。
{% if re.search(r"Error", l) %}
用
替换此行{% if "Error" in l %}
可以解决您的问题。
如果您的逻辑条件更复杂,您应该考虑定义自己的custom filters(可以调用任何python代码)或在视图层中执行复杂的操作。还要检查global namespace。