データベースからテキストをレンダリングするときにDjangoが改行文字を表示しない


90

私は開発にDjangoを使用しており、データベースから改行文字を含むテキストを取得しています。ただし、テンプレートタグを使用してテンプレートにレンダリングすると、改行文字が表示されません。

何が問題ですか?

回答:


222

テンプレートがHTMLを生成していることを覚えておく必要があります。HTMLでは、改行文字は単なる別の空白であり、次のテキストを新しい行に配置することを意味するものではありません。HTMLで新しい行を強制する方法はいくつかあります。

テキストを<pre>タグでラップして、HTMLが事前にフォーマットされていることを認識できるようにすることができます。

<pre>{{value}}</pre>

Djangoフィルターを使用して、プレーンテキストの改行をHTMLに変換できます。linebreaks単一の改行を<br>タグに変換し、二重の改行を<p>タグに変換します。linebreaksbr改行を<br>タグに変えるだけです:

{{value|linebreaks}}
{{value|linebreaksbr}}

これらを試して、どちらが好きかを確認できます。

それができない場合は、ビューで文字列操作を使用して、より適切な方法でプレーンテキストをHTMLに変換できます。そして、本当に高度になりたい場合は、好きなように変換する独自のフィルターを作成して、テンプレート全体で使用できます。



30

あなたの質問を完全に理解しているかどうかはわかりませんが、改行フィルターを使用してみてください。

{{ value|linebreaks }}

これが答えになるはずです。<pre> </ pre>を使用するのはくだらないことです。
ラフル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.