MDエディターを使用して、SO形式で質問を作成する方法。データがどのようにサーバーに送信され、どのように保存されてからレンダリングされるかを知りたかったのです。入力しているテキストのライフサイクル。
ここにマークダウンでテキストを入力します。サーバーにどのように送信されるか、つまり、書式設定がどのように処理されるか、保存された後、クライアントにどのようにレンダリングされるかを意味します。Pythonでこれを行うにはどうすればよいですか?ベストプラクティスは何ですか。
通常は、ユーザーからのMarkdown入力をテキストとして保存し、表示する必要があるときにHTMLにレンダリングします。(パフォーマンスが切実に必要な場合は、いつでもキャッシュできます)。
変更する必要がある場合は、HTMLではなくMarkdown入力を再度変更します。
PythonでMarkdown->HTML変換を行うには、 Markdownライブラリ を使用できます。
HTMLをMarkdownに戻すことは実際には想定されていません(MarkdownはHTMLほど豊富なフォーマットではないため、フォーマットが失われる可能性があります)が、Pythonライブラリhtml2textはたまたま有効なMarkdownを出力します-保証はできませんただし、Markdown自体は最初のHTMLに変換されます。
ただし、クライアントから送信されたデータを出力するときは、いつものように、クロスサイトスクリプティングなどのセキュリティリスクを考慮する必要があることに注意してください。このDjangoチケットで例を見ることができます。詳細については、このsecurity.stackexchange.comの質問
に
アクセスしてください。
実際、Python Markdownライブラリ(とりわけ)のセキュリティの欠如は、Django1.5django.utils.markup
で非推奨になる役割を果たしてきました。