知識の枝

"All is well"

Django TextFieldを改行させる方法

約242日前 2021年5月26日12:52
デジタル
Django HTML

改訂履歴


2021/5/26 投稿

1. 背景


Djangoを使った開発中に覚えたことを備忘録として残します。

今回はTextFieldに入力した文章を改行して表示する方法を解説します。


2. ゴール


入力テキストの改行部がhtmlに反映されるようにする。


3. はじめに


「なんだそんなことも知らないのか」なんて言わないで下さい。
記憶するためにこうして覚書を残します!


DjangoのTextFieldはCharFieldとは異なり、広ーいフィールドに割と自由に文字を書くことができます。

本ブログの記事投稿画面にもCharFieldとTextFieldが使われています。




CharFieldではそもそも改行ができませんが、TextFieldはフィールド内で改行を使用可能です。


ここで今回の問題が発生します。
さて、テキストの入力内容をテンプレート変数に入れてhtml上で表示させようとすると、、、
なぜか「htmlで改行が反映されない」んです。

解決する方法は簡単です。次項で説明します。


4. linebreaksbr


項目名の通り「linebreaksbr」を使用します。

これはDjangoの組み込みフィルタの1つで、標準機能として使えます。


textという変数に「改行を含んだ文章」が格納されているとします。
html上で下記のようにフィルタを使用します。
html
{{ text | linebreaksbr }}
「|」はバーティカルバーと呼ばれるものです。
キーボードの右上あたりにあると思います。私のパソコンでは「¥」と同じ位置です。


このようにDjangoはバーティカルバーで区切ってフィルタを指定すると、特殊な動作を行ってくれます。

ここで使用した「linebreaksbr」には、テキスト内の改行を<br>タグに変換する機能があります。


htmlで改行するときは「linebreaksbr」です!


5. さいごに


とても簡単でした。これなら忘れなくて済みそうです。