1

テンプレートからアクセスしたいヘルパー関数がいくつかありますが、これらへのアクセスに問題があります。Coffin で Jinja2 を使用する (これは素晴らしいことですが、グローバル関数にアクセスできないようです)。

オブジェクトを jinja.py に登録します

from coffin.template import Library
register = Library()

@register.object(name='tester')
def tester():
    return 'TESTING YAA!!'

print (register.jinja2_globals)

私のテンプレート tester.html は次のようになります。

{{  tester() }}

しかし、これは何が起こるかです:

>>> from apps import jinja
{'tester': <function tester at 0x3133938>}
>>> jinja.tester()
'TESTING YAA!!'

インポートは正常に機能し、関数は正しく登録されますが、render_to_response または render_to_string でアクセスできません:

>>> from coffin.template.loader import render_to_string as rts
>>> rts('tester.html')
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/pydev/drew/iame/lib/python2.6/site-packages/Coffin-0.3.7.dev-py2.6.egg/coffin/template/loader.py", line 55, in render_to_string
    return template.render(context_instance)
  File "/pydev/drew/iame/lib/python2.6/site-packages/Coffin-0.3.7.dev-py2.6.egg/coffin/template/__init__.py", line 56, in render
    return super(Template, self).render(**context)
  File "/pydev/drew/iame/lib/python2.6/site-packages/jinja2/environment.py", line 894, in render
    return self.environment.handle_exception(exc_info, True)
  File "/pydev/drew/iame/iame_cms/apps/templates/tester.html", line 1, in top-level template code
    {{  tester() }}
UndefinedError: 'tester' is undefined

しかし、私のテンプレートではアクセスできません:(

4

1 に答える 1

2

ライブラリをロードするには、標準の場所、つまりDjangoがそのようなライブラリを期待する場所にある必要があります。

https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#code-layout

つまり、のようなものmy_app/templatetags/customlib.pyです。

于 2012-05-30T11:53:28.477 に答える