ページレイアウトの兼ね合いで、長い文字列を省略する必要があり、
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_htmlHTMLを意識して、タグを壊さずに、
省略してくれるという、ちょっと興味深い処理を行ってくれるようです。

以上です。

コメント