Django / Textile / Pygments:“'>被转义

时间:2011-02-03 23:58:51

标签: python django pygments

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

{{body | textile | pygmentize | safe}}

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

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

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

1 个答案:

答案 0 :(得分:0)

无耻的插件让我在另一页上回答: https://stackoverflow.com/a/10138569/1224926

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

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

应该成为:

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

你会得到你所期望的。