【问题标题】:Rendering jinja2 blocks as json将 jinja2 块渲染为 json
【发布时间】:2013-07-07 15:01:06
【问题描述】:

我创建了一个 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,但是这种方法需要手动渲染每个块,这感觉不是正确的做法。

这可能吗?

【问题讨论】:

  • 我不会使用模板来生成 JSON,而不是当 json 模块会做得更好并且也会更好地处理引用时。
  • 我同意,也试过这个,但这意味着我必须手动渲染块,实际上是重新实现 jinja 的一部分。它有效,但必须有更好的方法..

标签: python jinja2


【解决方案1】:

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

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

【讨论】:

  • 这是ajax.html?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 2014-02-14
相关资源
最近更新 更多