将上下文传递给Jinja模板中包含的Jinja模板

时间:2016-02-17 06:29:02

标签: flask jinja2

我在所有Jinja文件中都有共同点。我想将所有常见内容移到Flask中的一个Jinja文件中。

我的应用程序是用Flask编写的,我将上下文传递给Jinja模板,如

def f1(name): render_template('j1.jinja', name=name)

def f2(name): render_template('j2.jinja', name=name)

def f3(name): render_template('j3.jinja', name=name)

我的j1.jinja文件是:

{%block content %}
Name: {{ name }}
Hello
{% endblock %}

我的j2.jinja文件是:

{%block content %}
Name: {{ name }}
Bye
{% endblock %}

我的j3.jinja文件是:

{%block content %}
Name: {{ name }}
Howdy
{% endblock %}

我将常用内容移到单个Jinja文件common.jinja,即:

{% block content %}
Name : {{name}}
{% endblock %}

我将其包含在所有Jinja文件中,例如:

{% include 'common.jinja' with { "name": name } only %}

哪个不起作用。我得到了例外:

Exception Occured. Explanation: expected token 'end of statement block', got 'with'

如何将上下文传递给包含的Jinja文件?

1 个答案:

答案 0 :(得分:1)

您的代码看起来有点奇怪。没有单独的with语句指定上下文,它是with context,通常与import语句一起使用(请参阅Import context behaviour)。

要将任何上下文传递给包含的模板,只需使用上下文变量呈现父模板,例如在render_template()

render_template('j3.jinja', name=name)