как наследовать только один блок в jinja2? - PullRequest
1 голос
/ 04 августа 2020

У меня есть файл base. json где:

{
    param1: value1,
{%- block block1 %}
    param2: {
        param3: value3,
        param4: value4
    }
{%- endblock %}
}

и файл результат. json:

{% extends "base.json" %}
someinfo
{% block block1 %}{% endblock %}

Но после рендеринга результата. json, я получаю всю информацию из base. json без someinfo@ из результата. json шаблон.

Как правильно наследовать только один блок из базы?

1 Ответ

1 голос
/ 05 августа 2020

Расширение шаблона - это не то, что вы хотите сделать, extends позволяет повторно использовать полный шаблон с переписыванием определенных c блоков:

Дано: base. json

{
    param1: value1,
{%- block block1 %}
    param2: {
        param3: value3,
        param4: value4
    }
{%- endblock %}
}

И результат. json

{% extends "base.json" %}
{%- block block1 %}
    param5: {
        param6: value6,
        param7: value7
    }
{%- endblock %}

Они будут отображаться как:

{
    param1: value1,
    param5: {
        param6: value6,
        param7: value7
    }
}

В вашем случае вы можете использовать include.

с частичным. json

    param5: {
        param6: value6,
        param7: value7
    }

И результат. json

{
    param8: value8,
{% include "partial.json" %}
}

Они будут отображаться как:

{
    param8: value8,
    param5: {
        param6: value6,
        param7: value7
    }
}

И поскольку файл является частичным, вы просто вставляете какое-то место в противном случае вы также можете включить его в блок, если хотите его где-то переписать:

base. json

{
    param1: value1,
{%- block block1 %}
{% include "partial.json" %}
{%- endblock %}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...