首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用金字塔编写jinja2扩展?

用金字塔编写jinja2扩展?
EN

Stack Overflow用户
提问于 2014-05-13 07:47:49
回答 1查看 392关注 0票数 0

我正在尝试编写一个带有金字塔的自定义jinja2扩展。

分机代码是:

代码语言:javascript
复制
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中加载扩展如下:

代码语言:javascript
复制
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:遇到未知标签“片段”

在对模板进行分离时:

代码语言:javascript
复制
{% snippet %}

我还需要做什么或者我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2014-08-20 10:04:47

add_jinja2_extension用于添加文件扩展名,而不是Jinja模板扩展名。

模板扩展应该在 entry中列出。

您可以通过settings映射传递这些内容,例如:

代码语言:javascript
复制
settings['jinja2.extensions'] = [SnippetExtension]
config = Configurator(settings=settings)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23625520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档