ここでスタック オーバーフローで使用されている 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 に保存されたコメントを出力して (エスケープして)、すべてをアンエスケープしてから、すべての非コード セクションを再度エスケープすることができるようです。
これを行うためのより良い方法はありますか?