読者です 読者をやめる 読者になる 読者になる

pyramidのjinjaテンプレートで独自filterを定義

pyramidのテンプレートで「nl2br」のような独自フィルターを挟みたいと思った時にメモです。
今回は「hoge2hage」という「hoge」を「hage」に変換するフィルターを定義してみます。

1. フィルター処理を作成
適当なところに処理を作成します。

$ vi myapp/filters.py
def hage2hoge(value):
    return re.sub(r'hage', 'hoge', value)

2. フィルターを定義
定義をコンフィグファイルに記載します。

$ vi development.ini
[app:main]
use = egg:myapp

pyramid.reload_templates = true
pyramid.debug_authorization = false
pyramid.debug_notfound = false
pyramid.debug_routematch = false
pyramid.default_locale_name = en
pyramid.includes =
    pyramid_debugtoolbar
jinja2.filters =
    hoge2hage = myapp.filters:hoge2hage

3. テンプレートでフィルターを使用
あとは以下のように使用すればjinjaテンプレートのフィルターとして動作します。

$ vi myapp/templates/hello.jinja2
hello {{data|hoge2hage}}