Django Template 内で長い文字列を省略する


ページレイアウトの兼ね合いで、長い文字列を省略する必要があり、
Django Template 内で filter 等で実現できないか調べたところ、
丁度いいのがあったので、記載します。

StackOverFlowで、以下のようなQ&Aがありました。
Django template tag to truncate text - Stack Overflow

Django 1.4 から truncatechars というFilterが使えるらしく、 以下のように記述すると、30文字を超える場合、末尾を... にして文字を省略してくれます。

<a href="{{ next.get_absolute_url }}">{{ next|truncatechars:30 }} &gt;</a>

ちなみに、django/defaultfilters.py at master · django/django
のソースを見ていると、
truncatechars 以外に、
truncatewords
truncatechars_html
truncatewords_html filterもありました。

違いは、truncatecharsは文字数で、truncatewords は単語数で省略してくれるようです。
truncatechars_html と、truncatewords_html はHTMLを意識して、タグを壊さずに、
省略してくれるという、ちょっと興味深い処理を行ってくれるようです。

以上です。

コメント