我正在尝试编写一个带有金字塔的自定义jinja2扩展。
分机代码是:
from jinja2 import nodes
from jinja2.ext import Extension
class SnippetExtension(Extension):
tags = set(['snippet'])
def __init__(self, environment):
print "Init"
super(SnippetExtension, self).__init__(environment)
def parse(self, parser):
print "Parse"
stream = parser.stream
tag = stream.next()
print "Writing"
return nodes.Output('<div>Test</div>').set_lineno(tag.lineno)我在__init__.py中加载扩展如下:
def main(global_config, **settings):
""" This function returns a Pyramid WSGI application.
"""
engine = engine_from_config(settings, 'sqlalchemy.')
DBSession.configure(bind=engine)
Base.metadata.bind = engine
config = Configurator(settings=settings)
config.include('pyramid_jinja2')
config.include('pyramid_fanstatic')
config.add_jinja2_renderer('.html')
config.add_static_view('static', 'static', cache_max_age=3600)
config.add_route('home', '/')
add_jinja2_extension(config,SnippetExtension) #<--- load the extension
config.scan()
return config.make_wsgi_app()然而,我得到了错误:
TemplateSyntaxError:遇到未知标签“片段”
在对模板进行分离时:
{% snippet %}我还需要做什么或者我做错了什么?
发布于 2014-08-20 10:04:47
add_jinja2_extension用于添加文件扩展名,而不是Jinja模板扩展名。
模板扩展应该在 entry中列出。
您可以通过settings映射传递这些内容,例如:
settings['jinja2.extensions'] = [SnippetExtension]
config = Configurator(settings=settings)https://stackoverflow.com/questions/23625520
复制相似问题