Django/Textile/Pygments:“ ' >被逃脱

发布于 2024-10-16 02:40:40 字数 369 浏览 6 评论 0原文

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

{{ body|textile|pygmentize|safe }}

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

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

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

I have a blog written in django that I am attempting to add syntax highlighting to. The posts are written and stored in the database as textile markup. Here is how they are supposed to be rendered via template engine:

{{ body|textile|pygmentize|safe }}

It renders all the HTML correctly and the code gets highlighted, but some characters within the code blocks are being escaped. Specifically double quotes, single quotes, and greater than signs.

Here is the Pygments filter I am using: http://djangosnippets.org/snippets/416/

I'm not sure which filter is actually putting the escaped characters in there or how to make it stop that. Any suggestions?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

焚却相思 2024-10-23 02:40:40

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

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

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

应该变成:

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

并且你会得到你所期望的。

shameless plug to me answering this on another page:
https://stackoverflow.com/a/10138569/1224926

the problem is beautifulsoup (rightly) assumes code is unsafe. but if you parse it into a tree, and pass that in, it works. So your line:

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

should become:

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

and you get what you would expect.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文