获取Jinja2模板中所有块的字典

dum*_*ter 1 python jinja2

假设我有一些带有几个块的Jinja2模板:

{% block A %}Blah{% endblock %}
{% block B %}whatever{% endblock %}
{% block C %}you get the idea{% endblock %}
Run Code Online (Sandbox Code Playgroud)

我想要一个Python函数,将其转换为dict(或JSON,或其他),每个块有一个条目.所以输出将是这样的:

{'A': 'Blah', 'B': 'whatever', 'C': 'you get the idea'}
Run Code Online (Sandbox Code Playgroud)

有没有确定的方法这样做?

我问,因为我希望通过AJAX获取应用程序更新页面而不是重新加载,同时保留向后兼容性.如果我可以解析Jinja2模板的块,那么我可以使用完全相同的模板文件来轻松生成整个页面或部分页面.所以,作为一个辅助问题......有更好的方法来解决这个问题吗?

小智 5

你可以看看Template.blocks现场.它具有块渲染功能的字典.

当使用context(我猜)作为参数调用时,块渲染函数返回生成器.

我希望以下代码段可以帮助您.


    for key, blockfun in template.blocks.iteritems():
        print key, ':',  ''.join(blockfun({}))

结果是:


    A : Blah
    C : you get the idea
    B : whatever