gpt4 book ai didi

python - 你如何使用 jinja2 显示 markdown 值?

转载 作者:太空狗 更新时间:2023-10-30 02:30:31 33 4
gpt4 key购买 nike

我使用 python markdown2 模块在服务器上处理一个字符串。

marked_up = '    import sys\n    print "hello there"' 
marked_up = unicode(markdown2.markdown(marked_up, extras=["fenced-code-blocks"]))

然后,我通过 jinja2 将值传递给客户端:

template_value = {'marked_up': marked_up}

template = JINJA_ENVIRONMENT.get_template('index.html')
self.response.write(template.render(template_value))

在 index.html 中,我尝试显示这个标记值:

<div class="row marketing" id="my_row_mark">

{{ marked_up }}

</div>

问题是显示的文本带有 html 属性:

<pre><code>import sys print "hello there" </code></pre>

我只想看:

import sys print "hello there"

通过 markdown2 应用适当的 markdown。

最佳答案

长话短说:

使用 |safe过滤以防止您的内容自动转义:

{{ marked_up|safe }}



Jinja2 有一个名为 autoescape 的配置选项确定模板中的内容是否应自动 HTML escaped还是不是。

默认情况下(如果您使用普通的 Jinja2)自动转义是禁用的。但是如果你使用一个集成了 Jinja2 的框架,autoescape 很可能被启用。

因此,当启用自动转义时,您传递到模板中的任何内容都将被 HTML 转义。请注意此示例中的 content 将如何转义,这会导致您在呈现的 HTML 中看到 HTML 标记:

example.py

from jinja2 import Environment, FileSystemLoader

env = Environment(loader=FileSystemLoader('.'),
autoescape=True) # <-- autoescaping enabled

template = env.get_template('index.html')
content = "<strong>bar</strong>"
print template.render(content=content)

index.html

<div>
{{ content }}
</div>

输出:

<div>
&lt;strong&gt;bar&lt;/strong&gt;
</div>

您现在可以 prevent escaping for a particular variable通过使用 |safe过滤器:

<div>
{{ content|safe }}
</div>

输出:

<div>
<strong>bar</strong>
</div>

有关更多详细信息,请参阅 HTML escaping 上的文档.

关于python - 你如何使用 jinja2 显示 markdown 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26325353/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com