【发布时间】:2014-05-13 07:47:49
【问题描述】:
我正在尝试使用 Pyramid 编写自定义 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: 遇到未知标签“sn-p”
分割模板时:
{% snippet %}
我还需要做什么或者我做错了什么?
【问题讨论】:
-
嗨,你有答案吗?如果您解决了这个问题,请帮助我,我也面临同样的问题。