jinja2 flask 转义 jinja2-highlight

1 投票
1 回答
506 浏览
提问于 2025-04-17 21:33

我需要在网页上显示一些代码,并且要有高亮效果。我在用Flask的时候发现可以使用jinja2-highlight。这个工具很好用,但我遇到了一些问题。

我尝试过的代码:

{% highlight 'python' %}
    {{ item.text }}
 {% endhighlight %}

看起来是可以的,我有40行代码,但所有特殊字符像&#34 ... 都显示成这样。所以我在{{ item.text }}这一行加上了|safe。现在所有字符都正常了,但我只看到5行代码(第五行是完整的)。

我觉得我知道问题出在哪里,但不知道怎么解决。

我的代码中有一些行像是<或>,看起来没有被转义。你知道为什么jinja2不转义<>吗?

我对使用|safe的安全性问题也不太清楚。这样会给服务器带来什么风险呢?

1 个回答

1

item.text|safe 这个写法可以帮你解决问题。看起来你可能是把代码转义了两次。你可能开启了某种自动转义的功能。

只要你不分享你网站的实际代码,就不需要担心服务器的安全性。

撰写回答