簡単な答えは、プレビューと最終的な答えをレンダリングするために2つの異なるMarkdownライブラリを使用することです。これら2つの異なるライブラリはHTMLの扱い方が異なります。
私たちの答えは "Markdown"と呼ばれるマークアップ言語を使ってスタイル化されフォーマットされています。マークダウンは、リンク、画像、ヘッダ、斜体、強調などのために、事前定義されたマークアップをHTMLに変換します。
技術的になりすぎることなく、Javascriptライブラリを使用してブラウザで回答のプレビューを作成します。私達はスピードの理由でこれをします。
ページを更新すると、答えはすでにPython Markdownライブラリを使用してHTMLに変換されています。ページにアクセスしたらすぐに回答を見やすくしたいので、これを行います。単純に未加工の回答を出力してからJavascriptライブラリを使用して変換することにした場合は、最初に "醜い"未加工の回答が表示され、次にきれいにフォーマットされたバージョンにジャンプします。それほど悪くはありませんが、問題はGoogleをはじめとする検索用にクロールするボットがJavascriptを実行していないことです。それらのボットは常に生の、醜い答えを見るでしょう。
では、どうしてこれら2つのライブラリはHTMLコードを別々に扱うのでしょうか。最終的な答えを担当するPythonライブラリはHTMLを「エスケープ」します。つまり、これらのHTMLコードを受け取り、それらを無害なテキストに変更します。ユーザーが私たちのページにHTMLを入力できるようにすると、ページのレイアウトが完全に破壊される可能性があると想像できるので、私は無害です。プレビューを担当するJavascriptライブラリはHTMLをエスケープしません。これは技術的にはバグです。
将来的には、セキュリティ上の理由からHTMLコードをプレビューするJavascriptライブラリの機能を削除する必要があります。 Markdownテキストをすべてレンダリングするために単一のライブラリを使用することにも移動します。