Google AppEngineで、Python2.5から2.7にアプリをコンバートする時に、テンプレートエンジンがDjangoからJinja2に変更になった。
Migrating to Python 2.7
https://developers.google.com/appengine/docs/python/python25/migrate27?hl=ja
その時に、従来のdjango用テンプレートを、Jinja2用に書き直すのにわかりやすいドキュメントがなくて、いろいろ苦労したので、JangoフィルタのJinjaへの変換対照表をメモっておく。
誰かの役に立てば幸い。
テンプレートの継承 {{ block.super }} ↓ {{ super() }} 日付 {{ recipe.date|date:"Y/m/d" }} ↓ {{ recipe.date|datetimeformat('%Y-%m-%d') }} def datetimeformat(value, format='%H:%M / %d-%m-%Y'): return value.strftime(format) 繰り返し {{forloop.counter}} ↓ {{loop.index}} エスケープ {% autoescape off %} ↓ {% autoescape false %} {% endautoescape %} or {% value|safe %} コメント {% comment %} {% endcomment %} ↓ {# #} ifchanged {% ifchanged lib.city %} {% endifchanged %} ↓ {% for lib in libraries %} {% if before_libcity != lib.city %} {% set before_libcity = lib.city %} {% endfor %} floatformat {{city_okper_population|floatformat}}% ↓ {{city_okper_population|round(1, 'floor')}}% cycle {% cycle 'recipe_left' 'recipe_right' %} ↓ {{ loop.cycle('recipe_left', 'recipe_right') }} Kindのキー .key.id ↓ .key.id()
linebreaksbr
カスタムフィルターを作成
Django snippets: A few jinja2 filters like django ones
http://djangosnippets.org/snippets/1371/
from jinja2 import Markup, escape
↑をインポートしておく必要がある。
Jinja2はDjangoテンプレートに比べて、自由度が高く、軽くなっている印象がある。
Djangoも最近はだいぶ柔軟になっているようだけれど。
あと、Jinja2でフォームを書く際に便利なマクロがあったので、メモしておく。
Jinja2 WTForms macros for twitter bootstrap
https://gist.github.com/ligthyear/1284631
WTFormsというライブラリを使っていて、Bootstrap2用だけど、適宜書き直せばわりと便利に使えると思う。
コメントする