将jinja2块渲染为json

时间:2013-07-07 15:01:07

标签: python jinja2

我已经创建了一个jinja2模板,它应该支持独立渲染和ajax渲染。 模板看起来像:

{% if is_ajax %}{% extends 'ajax.html' %}{% else %}{% extends 'site.html' %}{% endif %}
{% block title %}The Title{% endblock %}
{% block body %}The body{% endblock %}

site.html工作正常,但我没能创建一个将标题和正文块渲染为json的ajax.html。我试过像:

{
    "copy":"{% block body %}Default Body{% endblock %}",
    "title":"{% block title %}Default Title{% endblock %}",
}

但这当然不会将块转换为json。

我也尝试使用Template.blocks来创建使用python的json,但是这种方法需要手动渲染每个块,这感觉不是正确的方法。

这可能吗?

1 个答案:

答案 0 :(得分:2)

使用self.block_name()指令解决。 dumps实际上是传递给模板的'json.dumps'。

{
    "copy" : {{ dumps(self.copy()) | safe }},
    "title" : {{ dumps(self.title()) | safe }}
}