[[ともっくす alloc] init]

ともっくすの雑多な日記と技術的なメモ

PyramidでMakoテンプレートを使いたい

PyramidはデフォルトではChameleonテンプレートを用いる.

けど,テンプレート内で繰り返し処理などを使いたい場合は,ロジックが書けないChameleonテンプレートでは物足りない.

というわけで,Makoテンプレートを使うことにした.

jinja2テンプレートとも迷ったけど,Makoテンプレートの方が違和感が少なかったので.


MakoテンプレートはPyramidをインストールしたときに勝手にインストールされるので,ちょちょっと設定を変更するだけでいい.

開発環境ならdevelopment.ini,本番環境ならproduction.iniを以下のように変更する.
(プロジェクト名はpyramidtest)

[app:main]
use = egg:pyramidtest

pyramid.reload_templates = true
pyramid.debug_authorization = false
pyramid.debug_notfound = false
pyramid.debug_routematch = false
pyramid.default_locale_name = jp
pyramid.includes =
    pyramid_debugtoolbar
    pyramid_tm

mako.directories = pyramidtest:templates # ここを追記

sqlalchemy.url = sqlite:///%(here)s/pyramidtest.sqlite

で,templatesフォルダにあるmytemplate.ptとかの拡張子を.makにして,views.pyのデコレータを

@view_config(route_name="hoge", renderer="hoge.mak")

みたいにするだけ.