假设我有一些 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
