web-dev-qa-db-ja.com

Djangoは、データベースからテキストをレンダリングするときに改行文字を表示しません

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

何が問題ですか?

75
Nazmul Hasan

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

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

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

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

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

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

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

196
Ned Batchelder

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

{{ value|linebreaks }}
21
David