如何转义从jinja2模板文件中读取的注释中的字符?

时间:2019-09-14 21:25:21

标签: escaping jinja2

我想使用jinja2模板文件从$ /usr/local/julia-1.2.0/bin/julia main.jl ERROR: LoadError: LoadError: invalid redefinition of constant Test Stacktrace: [1] top-level scope at /usr/home/user/test/test.jl:3 [2] include at ./boot.jl:328 [inlined] [3] include_relative(::Module, ::String) at ./loading.jl:1094 [4] include(::Module, ::String) at ./Base.jl:31 [5] include(::String) at ./client.jl:431 [6] top-level scope at /usr/home/user/test/main.jl:3 [7] include at ./boot.jl:328 [inlined] [8] include_relative(::Module, ::String) at ./loading.jl:1094 [9] include(::Module, ::String) at ./Base.jl:31 [10] exec_options(::Base.JLOptions) at ./client.jl:295 [11] _start() at ./client.jl:464 in expression starting at /usr/home/user/test/test.jl:3 in expression starting at /usr/home/user/test/main.jl:3 文件中读入注释I <3 chickens

我的jinja2模板如下:

config.json

从comment.text中读入字符{% for comment in comments %} <p><b>{{ comment.owner }}</b> {{comment.text }} </p> {% endfor %} 。 我应该怎么在这里逃脱?

这些是我收到的错误消息:

<

1 个答案:

答案 0 :(得分:0)

有一个逃生过滤器

from jinja2 import Environment, select_autoescape

env = Environment()
comments = [{'owner':'cmlzaGk', 'text': 'I <3 chickens'}]
tmpl_data = '''
{% for comment in comments %}
    <p><b>{{ comment.owner|escape }}</b> {{comment.text|escape }} </p>
{% endfor %}
'''

tmpl = env.from_string(tmpl_data)
print(tmpl.render(comments=comments))

看看AutoEscaping

from jinja2 import Environment, select_autoescape

env = Environment(autoescape=select_autoescape())
comments = [{'owner':'cmlzaGk', 'text': 'I <3 chickens'}]
tmpl_data = '''
{% for comment in comments %}
    <p><b>{{ comment.owner }}</b> {{comment.text }} </p>
{% endfor %}
'''

tmpl = env.from_string(tmpl_data)
print(tmpl.render(comments=comments))

如果您在进行jinja设置的框架中使用jinja2,则建议您参考该框架的文档。例如。 Flask默认设置自动转义,但是要求文件模板具有特定的extensions

相关问题