我在Stack Overflow中使用此处使用的Markdown编辑器的Pagedown实现,并且我的项目使用的是Django。我遇到的问题是,在Markdown代码段中的特殊字符<
正在被Django转义,但后来被Pagedown视为代码并显示为<
。Pagedown使用Django转义代码段中的特殊字符
当我输入一个代码片断,如:
for(var i = 0; i < 10; i++)
我得到下面的正确预览。 <
也正确保存在数据库中,而不是HTML实体<
。
但是,当我在新页面上输出此评论时,Django会自动转义这些特殊字符。
for(var i = 0; i < 10; i++)
我试过关掉autoescape,但是这似乎是正确的行为,因为如果用户写道
<script>alert('hi');</script>
作为代码评论,Django的没有逃脱这一点,那就执行这个JavaScript代码。但是,当下页转到这个转换成一个代码标签,它增加了解决此节<pre>
标记,使代码显示为
for(var i = 0; i < 10; i++)
我怎样才能获得的代码段,以显示正确的转义字符,但也安全地写这个,所以它不会执行任意的JavaScript代码?看起来也许我可以让Django输出保存的注释(转义),然后去找出所有的东西,然后重新转义所有非代码部分。
有没有更好的方法来做到这一点?