【问题标题】:jinja2.exceptions.TemplateSyntaxError: unexpected char '\\'jinja2.exceptions.TemplateSyntaxError: 意外字符 '\\'
【发布时间】:2020-11-21 00:34:12
【问题描述】:

我收到 jinja2.exceptions.TemplateSyntaxError 和意外的字符 '\',下面的 python 代码使用 Jinja2 模板。

我发现问题在于在模板中使用 ==。

代码

OBJ['steps'][0]['elements'][1].update({'kind': "SERVER"})
op = "{% if steps[0].elements[1].kind == \"SERVER\" or steps[0].elements[1].kind == \"DAEMON\" %} SNIP {% endif %}"
template1 = Template(json.dumps(op))
payload= template1.render(steps=OBJ['steps'])
print(payload)

输出

Traceback (most recent call last):
  File "/home/rashtrapathy/jj.py", line 15, in <module>
    template1 = Template(json.dumps(op))
  File "/usr/local/lib/python3.5/dist-packages/jinja2/environment.py", line 1031, in __new__
    return env.from_string(source, template_class=cls)
  File "/usr/local/lib/python3.5/dist-packages/jinja2/environment.py", line 941, in from_string
    return cls.from_code(self, self.compile(source), globals, None)
  File "/usr/local/lib/python3.5/dist-packages/jinja2/environment.py", line 638, in compile
    self.handle_exception(source=source_hint)
  File "/usr/local/lib/python3.5/dist-packages/jinja2/environment.py", line 832, in handle_exception
    reraise(*rewrite_traceback_stack(source=source))
  File "/usr/local/lib/python3.5/dist-packages/jinja2/_compat.py", line 28, in reraise
    raise value.with_traceback(tb)
  File "<unknown>", line 1, in template
jinja2.exceptions.TemplateSyntaxError: unexpected char '\\' at 36

请告诉我在 Jinja2 模板中使用 == 有什么问题。

【问题讨论】:

    标签: python jinja2


    【解决方案1】:

    在 Jinja 中使用 == 没有任何问题,但我怀疑问题出在使用反斜杠时。 你可以这样做吗?

    op = "{% if steps[0].elements[1].kind == 'SERVER' or steps[0].elements[1].kind == 'DAEMON' %} SNIP {% endif %}"
    

    【讨论】:

    • 与问题无关,但更简短的写法是:op = "{% if steps[0].elements[1].kind in ('SERVER', 'DAEMON') %} SNIP {% endif %}"
    猜你喜欢
    • 2019-11-07
    • 1970-01-01
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 2018-01-30
    相关资源
    最近更新 更多