如何在 jinja2 中只继承一个块?
how to inherit only one block in jinja2?
我有一个文件 base.json 其中:
{
param1: value1,
{%- block block1 %}
param2: {
param3: value3,
param4: value4
}
{%- endblock %}
}
和一个文件result.json:
{% extends "base.json" %}
someinfo
{% block block1 %}{% endblock %}
但是在渲染 result.json 之后,我从 base.json 中获得了全部信息而没有 someinfo@
来自 result.json 模板。
从base中只继承一个block的正确方法是什么?
扩展你的模板不是你想要的,扩展允许重用一个完整的模板,重写特定的块:
给定:base.json
{
param1: value1,
{%- block block1 %}
param2: {
param3: value3,
param4: value4
}
{%- endblock %}
}
和result.json
{% extends "base.json" %}
{%- block block1 %}
param5: {
param6: value6,
param7: value7
}
{%- endblock %}
那些将呈现为:
{
param1: value1,
param5: {
param6: value6,
param7: value7
}
}
在您的情况下,您可以使用 include
.
和partial.json
param5: {
param6: value6,
param7: value7
}
和result.json
{
param8: value8,
{% include "partial.json" %}
}
那些将呈现为:
{
param8: value8,
param5: {
param6: value6,
param7: value7
}
}
而且因为文件是部分文件,你只是在其他地方包含,你也可以将它包含在一个块中,如果你想在某个地方重写它:
base.json
{
param1: value1,
{%- block block1 %}
{% include "partial.json" %}
{%- endblock %}
}
我有一个文件 base.json 其中:
{
param1: value1,
{%- block block1 %}
param2: {
param3: value3,
param4: value4
}
{%- endblock %}
}
和一个文件result.json:
{% extends "base.json" %}
someinfo
{% block block1 %}{% endblock %}
但是在渲染 result.json 之后,我从 base.json 中获得了全部信息而没有 someinfo@
来自 result.json 模板。
从base中只继承一个block的正确方法是什么?
扩展你的模板不是你想要的,扩展允许重用一个完整的模板,重写特定的块:
给定:base.json
{
param1: value1,
{%- block block1 %}
param2: {
param3: value3,
param4: value4
}
{%- endblock %}
}
和result.json
{% extends "base.json" %}
{%- block block1 %}
param5: {
param6: value6,
param7: value7
}
{%- endblock %}
那些将呈现为:
{
param1: value1,
param5: {
param6: value6,
param7: value7
}
}
在您的情况下,您可以使用 include
.
和partial.json
param5: {
param6: value6,
param7: value7
}
和result.json
{
param8: value8,
{% include "partial.json" %}
}
那些将呈现为:
{
param8: value8,
param5: {
param6: value6,
param7: value7
}
}
而且因为文件是部分文件,你只是在其他地方包含,你也可以将它包含在一个块中,如果你想在某个地方重写它:
base.json
{
param1: value1,
{%- block block1 %}
{% include "partial.json" %}
{%- endblock %}
}