[Django] テンプレートで文字を切り詰めたい
最近のwebデザインでカード内に本文がちょっとだけ載っているデザインをよく目にします。
Djangoでも同じように表示させたいという願望のもとテンプレート内で文字列の切り詰め(トランケート)をしてみたいと思います。
文字列を切り詰める
具体的には以下のようにフィルターを適用することで切り詰めることができます。
文字数を20文字に切り詰める
{{ article.text|truncatechars_html:20 }}
コロン(:)の後ろについているのが実際に切り詰める文字数です。
上記の場合、切り詰められた文字列は後ろにつく"…“を含めて20文字
つまり、(20 - 3) + "..."
になります。
指定した文字数に満たない場合は、特に切り詰められることもなく後ろに”…“が付くこともありません。
例えば、以下の二つの文字列をtruncatechars_html
フィルターで10文字に切り詰めた場合、
"hello new world"
"hello"
{{ string|truncatechars_html:10 }}
"hello n..."
"hello"
それぞれ上のようになります。
十文字より長ければ切り詰められ、そうでなければ変化はありません。