Django/Textile/Pygments: " ' > 被转义
我有一个用Django写的博客,想给它添加代码高亮功能。文章是用一种叫做textile的标记语言写的,并存储在数据库里。下面是它们通过模板引擎应该被渲染的方式:
{{ body|textile|pygmentize|safe }}
这样可以正确显示所有的HTML内容,并且代码部分也能高亮显示,但在代码块中,有些字符被转义了。具体来说,就是双引号、单引号和大于号这些字符。
这是我使用的Pygments过滤器:http://djangosnippets.org/snippets/416/
我不太确定是哪个过滤器导致这些字符被转义,或者怎么才能让它不这样做。有没有什么建议?
1 个回答
0
这是我在另一个页面上回答这个问题的自我推荐:
https://stackoverflow.com/a/10138569/1224926
问题在于,beautifulsoup(这是对的)认为代码是不安全的。但是如果你把它解析成一个树形结构,然后传入,这样就可以正常工作了。所以你原来的代码:
code.replaceWith(highlight(code.string, lexer, HtmlFormatter()))
应该改成:
code.replaceWith(BeautifulSoup(highlight(code.string, lexer, HtmlFormatter())))
这样你就能得到你想要的结果了。