Набор переменных с использованием оператора set не распространяется на родительский шаблон в jinja - PullRequest
0 голосов
/ 17 марта 2020

родитель. sql

I am in parent {{ itable }}

ребенок. sql

{% extends 'test.sql' %}

{% set itable = "test"  %}

Когда я запускаю мой код python

template = env.get_template('child.sql')
    data = {
            'impressions_table': 'test'
        }
    j = jinjasql.JinjaSql(env=env)
    query, bind_params = j._prepare_query(
        template,
        data
    )

Мой вывод

I am in test %s

Это простой пример чего-то сложного, что я делаю. Я ищу способ распространения значений переменных до родителей.

Я также пытался использовать

include 

но я получаю ошибку, в которой говорится, что ожидаемый конец получен.

1 Ответ

0 голосов
/ 17 марта 2020

Это правильно - переменные не передаются в родительскую область. Однако блоки используются для переопределения поведения родителей:

родительский шаблон:

I am in parent {% block itable %}{% endblock %}

дочерний шаблон:

{% extends 'test.sql' %}

{% block itable %}test{% endblock %}

Это также позволяет вам установить значение по умолчанию в родительский, имеющий значение по умолчанию внутри блока: {% block itable %}default_value{% endblock %}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...