我有一个用django编写的博客,我试图添加语法高亮。这些帖子被编写并作为纺织品标记存储在数据库中。以下是它们应该如何通过模板引擎呈现:
{{body | textile | pygmentize | safe}}
它正确呈现所有HTML并突出显示代码,但代码块中的某些字符正在被转义。特别是双引号,单引号和大于号。
以下是我正在使用的Pygments过滤器:http://djangosnippets.org/snippets/416/
我不确定哪个过滤器实际上将转义字符放在那里或如何使其停止。有什么建议吗?
答案 0 :(得分:0)
无耻的插件让我在另一页上回答: https://stackoverflow.com/a/10138569/1224926
问题是beautifulsoup(正确)假设代码不安全。但如果你把它解析成一棵树,然后把它传递进来,那就行了。所以你的行:
code.replaceWith(highlight(code.string, lexer, HtmlFormatter()))
应该成为:
code.replaceWith(BeautifulSoup(highlight(code.string, lexer, HtmlFormatter())))
你会得到你所期望的。