Djangoのテンプレートフィルターを使って記事の一部を抜粋する

Category :

Djangoでは、テンプレート側で処理を行いたい場合テンプレートフィルターかテンプレートタグのどちらかで補うことができます。

使い分け

この2つは、関数の引数が2つ以下、もしくはロジック内にテンプレートコンテクストを使うかで使い分けできます。 具体的には、引数が2つのときはテンプレートフィルターを用い、Viewから渡されるContextを使って処理したい場合はテンプレートタグを使います。

今回は関数が2つで複雑なロジックも必要としないのでテンプレートフィルターを使います。

使用方法

アプリケーションにtemplatetagsディレクトリを作成し、その中に__init__.pyファイルを作成します。

さらに実際にロジックを入れるためのファイルを作成してください。

from django import template
from django.utils import html
register = template.Library()
@register.filter
def multiply(text):
return html.strip_tags(text)[:70] + '...'

from django.utils import htmlはDjangoが用意しているユーティリティモジュールです。

あとはテンプレート側で呼び出すだけです。

{% load excerpt_text_tags.py %}
...
{{ excerpt | text }}
...

参考

組み込みタグとフィルタ

TOP
© 2021 uichi