django的Jinja globals-使用棺材

django的Jinja globals-使用棺材,django,global-variables,jinja2,Django,Global Variables,Jinja2,我想从模板中访问一些助手函数,但在访问这些函数时遇到困难。 将Jinja2与Coffin一起使用(这很好,但我似乎无法访问全局函数) 我在jinja.py中注册我的对象 from coffin.template import Library register = Library() @register.object(name='tester') def tester(): return 'TESTING YAA!!' print (register.jinja2_globals)

我想从模板中访问一些助手函数,但在访问这些函数时遇到困难。 将Jinja2与Coffin一起使用(这很好,但我似乎无法访问全局函数)

我在jinja.py中注册我的对象

from coffin.template import Library
register = Library()

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

print (register.jinja2_globals)
My template tester.html如下所示:

{{  tester() }}
但事实就是这样:

>>> from apps import jinja
{'tester': <function tester at 0x3133938>}
>>> jinja.tester()
'TESTING YAA!!'
>>从应用程序导入jinja
{'tester':}
>>>jinja.tester()
“测试YAA!!”
导入工作正常,函数注册正确,但无法使用render_to_响应或render_to_字符串进行访问:

>>> 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
>>从coffin.template.loader导入将\u呈现为\u字符串作为rts
>>>rts('tester.html')
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/pydev/drew/iame/lib/python2.6/site packages/Coffin-0.3.7.dev-py2.6.egg/Coffin/template/loader.py”,第55行,呈现到字符串中
返回template.render(上下文\实例)
文件“/pydev/drew/iame/lib/python2.6/site packages/Coffin-0.3.7.dev-py2.6.egg/Coffin/template/_init____;.py”,第56行,在渲染中
返回super(模板,self).render(**上下文)
文件“/pydev/drew/iame/lib/python2.6/site packages/jinja2/environment.py”,第894行,在渲染中
返回self.environment.handle\u异常(exc\u info,True)
顶级模板代码中的文件“/pydev/drew/iame/iame_cms/apps/templates/tester.html”,第1行
{{tester()}}
UndefinedError:“tester”未定义

但在我的模板中无法访问:(

要加载您的库,它必须位于标准位置,即Django希望加载此类库的位置:


i、 例如,
my_app/templatetags/customlib.py

令人惊讶,但这在使用coffin时也适用。在此之前,我的全局文件已加载,但无法从模板访问。非常感谢。稍后将测试:)已测试,现在一切正常。非常感谢苏:D