カスタムフィルター
カスタムフィルターはテンプレートの内容になんらかの変更を行うときに使います。
例えばwikiの文章のなかに
abcd[[test]]dcba
のような記述があったときに
abcd<a href="/wiki/test/">test</a>bcda
と変換させたいときは
テンプレートを以下のようにして
{% load wikitags %} {{ page.title }} <h1>{{ page.title }}</h1> <div class="body"> {{ page.body|wikify }} </div>
カスタムフィルターを以下のようにすると良い。
/myproject/wiki/templatetags/wikitags.py
from django.template import Library from django.conf import settings register = Library() @register.filter def wikify(value): """Makes WikiWords""" import re wikifier = re.compile("\[\[(.+?)\]\]") return wikifier.sub(r'<a href="/wiki/\1/">\1</a>', value)
テンプレートの
{% load wikitags %}
でtemplatetagsのwikitagsを読み込み
{{ page.body|wikify }}
でwikitagsのwikifyという関数にpage.bodyを引数で渡すことによって正規表現で書き換えられた文字列が返ってきます。
参考(というかそのまま)
http://e-scribe.com/news/171