我已经创建了一个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,但是这种方法需要手动渲染每个块,这感觉不是正确的方法。
这可能吗?
答案 0 :(得分:2)
使用self.block_name()
指令解决。 dumps
实际上是传递给模板的'json.dumps'。
{
"copy" : {{ dumps(self.copy()) | safe }},
"title" : {{ dumps(self.title()) | safe }}
}