ドキュメントを調べましたが、答えが見つかりません。それはおそらく私が見逃しているばかげた基本的なものです。ピラミッド付きの jinja2 セットアップがあり、pyramid_jinja2 を使用しており、.ini ファイルにフィルターをセットアップしています。
jinja2.filters =
model_url = pyramid_jinja2.filters:model_url_filter
route_url = pyramid_jinja2.filters:route_url_filter
static_url = pyramid_jinja2.filters:static_url_filter
my_filter = myapp.view.my_filter
(my_filter は単純に各値に 100 を掛けます) これはうまくいきます:
@view_config(renderer="json",route_name="tester")
def tester(request):
myList = [1,2,3,4]
return render_to_response("templates/test.jinja2",{'myList':myList},request=request)
test.jinja2:
{% for l in myList %}
{{ l | my_filter }}
{% endfor %}
ただし、これは次のことを行いません。
@view_config(renderer="json",route_name="tester")
def tester(request):
myList = [1,2,3,4]
tmplate = Template(u'''\
{% for l in myList %}
{{ l | my_filter }}
{% endfor %}
''')
html = tmplate.render(myList = myList)
return render_to_response("templates/test.jinja2",{'html':html},request=request)
test.jinja2:
{{ html | safe }}
私のエラーメッセージ:
jinja2.exceptions.TemplateAssertionError
TemplateAssertionError: no filter named 'my_filter'