python - 将 jinja2 block 渲染为 json

标签 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 工作正常,但我无法创建将标题和正文 block 呈现为 json 的 ajax.html。我尝试过类似的事情:

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

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

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

这可能吗?

最佳答案

通过使用self.block_name()指令解决。 dumps 实际上是传递到模板中的“json.dumps”。

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

关于python - 将 jinja2 block 渲染为 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17513265/

相关文章:

python - 从日志文件中提取日期?

python - 可区分的字符?

python - 在 App Engine 上使用 Python 上传大文件时如何防止 Blob 存储上传 URL 过期

python - PLY Lex 和 Yacc 问题

python - 为什么这个 Jinja 宏渲染文本而不是 HTML?

python - 如何使用带有多个参数的 Flask Jinja2 url_for

python - pyparsing:组合多个元素的setResultsName

python - 一页上的多个表单 Python FLASK

command-line-arguments - 在Ansible中构建映射时发出警告

django - Django 中的 Sphinx 文档