1

我有一个用 django 编写的博客,我正在尝试添加语法高亮。这些帖子作为纺织品标记写入并存储在数据库中。以下是它们应该如何通过模板引擎呈现:

{{身体|纺织品|pygmentize|安全}}

它正确呈现所有 HTML 并且代码被突出显示,但是代码块中的一些字符被转义。特别是双引号、单引号和大于号。

这是我正在使用的 Pygments 过滤器:http: //djangosnippets.org/snippets/416/

我不确定哪个过滤器实际上将转义字符放在那里,或者如何让它停止。有什么建议么?

4

1 回答 1

0

无耻的插头让我在另一个页面上回答这个问题: https ://stackoverflow.com/a/10138569/1224926

问题是beautifulsoup(正确地)假设代码不安全。但是如果你把它解析成一棵树,然后把它传递进去,它就可以工作了。所以你的线:

code.replaceWith(highlight(code.string, lexer, HtmlFormatter()))

应该变成:

code.replaceWith(BeautifulSoup(highlight(code.string, lexer, HtmlFormatter())))

你会得到你所期望的。

于 2012-05-10T07:41:34.770 回答