テンプレートの扱いが変わってしまったので、ソースを修正しないと動かなくなってしまった。
テンプレートは mako を使用中。
環境についてはこう。
Mac OS X 10.9.2
Python 2.7.6
Pyramid については、ここを参照。
- development.ini
テンプレートファイルが入っているディレクトリの設定はそのまま。
mako.directories = my_project:templates
- setup.py
ここは、requires に 'pyramid_mako' を追加する。
requires = [ 'pyramid_mako', 'pyramid',
- my_project/__init__.py
config = Configurator(settings=settings, の後にこれを追加。
config.include('pyramid_mako')
テンプレートファイルの拡張子に .html を追加するところは、こう修正した。
これがなかなかわからなかった。
<修正前>
config.add_renderer(".html", "pyramid.mako_templating.renderer_factory")
<修正後>
config.add_mako_renderer('.html', settings_prefix='mako.')
- views.py の renderer の設定は前のまま
そのまま「renderer='home.html'」などとすることができる。
@view_config(route_name='home', renderer='home.html', permission='edit', request_method="GET")
mako もいいけど jinja2 にしたい、という場合は「config.add_renderer()」のところと「mako.directories = pypwm:templates」をどうしたらよいのでしょう。
ついでにちょっとやってみる。
- development.ini
pyramid.includes に pyramid_jinja2 を追加する。
それと、jinja2.directories の設定。
pyramid.includes = pyramid_jinja2 # pyramid_debugtoolbar pyramid_tm jinja2.directories = my_project:templates
- setup.py
requires = [ 'pyramid_jinja2', 'pyramid',
- my_project/__init__.py
config.add_jinja2_search_path も追加する。
config.include('pyramid_jinja2') config.add_renderer(".html", "pyramid_jinja2.renderer_factory") config.add_jinja2_search_path("pypwm:templates")
こんな感じでした。
mako テンプレートを jinja2 に書き換える方がたいへんです。
mako | jinja2 | |
---|---|---|
コメント | ## for maco <%doc>multi line</%doc> |
{# for jinja2 #}
|
include | <%include file="my_header.html"/> |
{% include "my_header.html" %} |
request. static_url など |
"${request.static_url( 'pypwm:static/my.css')}" ${request.route_url('home')} |
{{ request.application_url }} /static/my.css" {{ request.application_url }}/home |
for loop | % for item in items: % endfor |
{% for item in items -%} {%- endfor %} |
if | % if xxx == 'yyy': % else: % endif |
{% if xxx' == 'yyy' %} {% else %} {% endif %} |
変数 | ${my_var} |
{{ my_var }} |
0 件のコメント:
コメントを投稿