Reputation: 159
I have a file base.json where:
{
param1: value1,
{%- block block1 %}
param2: {
param3: value3,
param4: value4
}
{%- endblock %}
}
and a file result.json:
{% extends "base.json" %}
someinfo
{% block block1 %}{% endblock %}
But after rendering result.json, I get the whole information from base.json without someinfo@
from result.json template.
What is the correct way to inherit only one block from the base?
Upvotes: 1
Views: 391
Reputation: 39109
Extending your template is not what you are looking to do, extends allows the reuse of a full template, with the rewrite of specific blocks:
Given: base.json
{
param1: value1,
{%- block block1 %}
param2: {
param3: value3,
param4: value4
}
{%- endblock %}
}
And result.json
{% extends "base.json" %}
{%- block block1 %}
param5: {
param6: value6,
param7: value7
}
{%- endblock %}
Those will render as:
{
param1: value1,
param5: {
param6: value6,
param7: value7
}
}
In your case what you can do is to use an include
.
With partial.json
param5: {
param6: value6,
param7: value7
}
And result.json
{
param8: value8,
{% include "partial.json" %}
}
Those will render as:
{
param8: value8,
param5: {
param6: value6,
param7: value7
}
}
And because the file is a partial, that you just inculde some place else, you can also include it in a block, if you want to rewrite it somewhere:
base.json
{
param1: value1,
{%- block block1 %}
{% include "partial.json" %}
{%- endblock %}
}
Upvotes: 1