ここでスタック オーバーフローで使用されている Markdown エディターの Pagedown 実装を使用しており、私のプロジェクトでは Django を使用しています。私が抱えている問題は<、Markdown コード セクションのような特殊文字が Django によってエスケープされているが、Pagedown によってコードとして扱われ、<.
次のようなコード スニペットを入力すると:
for(var i = 0; i < 10; i++)
以下の適切なプレビューが表示されます。HTMLエンティティではなく、データベースに<も適切に保存されます<。
ただし、このコメントを新しいページに出力しようとすると、Django はこれらの特殊文字を自動的にエスケープします。
for(var i = 0; i < 10; i++)
自動エスケープをオフにしようとしましたが、これは正しい動作のようです。
<script>alert('hi');</script>
コード コメントとして、Django はこれをエスケープせず、この JavaScript コードを実行します。しかし、その後、Pagedown がこれをコード タグに変換するときに、<pre>このセクションの周りにタグを追加するため、コードは次のように表示されます。
for(var i = 0; i < 10; i++)
適切なエスケープされていない文字を表示するコード セクションを取得するにはどうすればよいですか? また、これを安全に記述して、任意の JavaScript コードを実行しないようにするにはどうすればよいですか? おそらく、Django に保存されたコメントを出力して (エスケープして)、すべてをアンエスケープしてから、すべての非コード セクションを再度エスケープすることができるようです。
これを行うためのより良い方法はありますか?