Skip to main content
 首页 » 编程设计

python之获取 Jinja2 模板中所有 block 的字典

2025年05月04日18cloudgamer

假设我有一些 Jinja2 模板,里面有几个 block :

{% block A %}Blah{% endblock %} 
{% block B %}whatever{% endblock %} 
{% block C %}you get the idea{% endblock %} 

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

{'A': 'Blah', 'B': 'whatever', 'C': 'you get the idea'} 

是否有既定的方法来做到这一点?

我问是因为我想通过 AJAX 让我的应用程序更新页面而不是重新加载,同时保持向后兼容性。如果我可以解析我的 Jinja2 模板 block ,那么我可以使用完全相同的模板文件轻松生成整个页面或部分页面。那么,作为一个附属问题……有没有更好的方法来解决这个问题?

请您参考如下方法:

可以查看<a href="http://jinja.pocoo.org/docs/api/#jinja2.Template.blocks" rel="noreferrer noopener nofollow">Template.blocks</a> field 。它具有 block 渲染功能的字典。

block 渲染函数在使用上下文(我猜)作为参数调用时返回生成器。

希望以下代码片段对您有所帮助。

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

结果是:

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