Djangoのテンプレートフィルターを使って記事の一部を抜粋する
Category : Django
Djangoでは、テンプレート側で処理を行いたい場合テンプレートフィルターかテンプレートタグのどちらかで補うことができます。
使い分け
この2つは、関数の引数が2つ以下、もしくはロジック内にテンプレートコンテクストを使うかで使い分けできます。 具体的には、引数が2つのときはテンプレートフィルターを用い、Viewから渡されるContextを使って処理したい場合はテンプレートタグを使います。
今回は関数が2つで複雑なロジックも必要としないのでテンプレートフィルターを使います。
使用方法
アプリケーションにtemplatetags
ディレクトリを作成し、その中に__init__.py
ファイルを作成します。
さらに実際にロジックを入れるためのファイルを作成してください。
from django import templatefrom django.utils import htmlregister = template.Library()@register.filterdef multiply(text):return html.strip_tags(text)[:70] + '...'
from django.utils import html
はDjangoが用意しているユーティリティモジュールです。
あとはテンプレート側で呼び出すだけです。
{% load excerpt_text_tags.py %}...{{ excerpt | text }}...